javascript - 如果登录用户未单击,则突出显示网页中的按钮
问题描述
寻找一种方法来突出显示用户未访问的按钮,以防更改单击这些按钮时重定向的视图的内容。解决方案应该在 ASP.net MVC CSS 框架中。
<head>
<style type="text/css">
body{
overflow-x:scroll;
}
.auto-stylelay1 {
font-size: 18px;
text-align: left;
cursor: pointer;
}
</head>
<div id="sidebar-wrapper">
<ul class="sidebar-nav">
<li class="sidebar-brand" style="font-size: 22px">
<a href="#">
<strong>
</strong>
</a>
</li>
<b></b>
<p class="auto-style2"><strong>Hello @User.Identity.Name!</strong></p>
<li class="auto-stylelay1">@Html.ActionLink("Home", "Index", "Home")</li>
<li class="auto-stylelay1">@Html.ActionLink("Proof of Concept", "POC", "Home")</li>
<li class="auto-stylelay1">@Html.ActionLink("Reports", "report", "Home")</li>
<li class="auto-stylelay1">@Html.ActionLink("Links/Other Resources", "Links", "Home")</li>
<li class="auto-stylelay1">@Html.ActionLink("About", "About", "Home")</li>
<li class="auto-stylelay1">@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
</div>
如果用户没有单击,我想更改菜单栏的布局样式页面按钮。我添加了一个检查以查看用户浏览过的位置。以及他们浏览的日期。但是我缺少对每个用户的共享布局文件进行更改的代码。
我希望通过一些新的内容指示器突出显示该按钮。基本上,我想根据用户是否访问此页面来更改 li html 操作链接的类样式。如果单击按钮,我想将类返回到 auto-stylelay1。
解决方案
一种可能的解决方案是将其保存在本地存储中。
首先为每个列表项分配一个 id:
<li id="Home" class="auto-stylelay1">@Html.ActionLink("Home", "Index", "Home")</li>
<li id="POC" class="auto-stylelay1">@Html.ActionLink("Proof of Concept", "POC", "Home")</li>
<li id="Reports" class="auto-stylelay1">@Html.ActionLink("Reports", "report", "Home")</li>
如果单击按钮将其添加到数组并将其保存到本地存储:
$("a").on("click", function (e) {
e.preventDefault(); // stop following link
var retrievedDate = localStorage.getItem("buttonsClicked");
var buttonsClicked = JSON.parse(retrievedData);
var elementId = $(this).attr('id') // Get Id of element
buttonsClicked.push(elementId);
localStorage.setItem("buttonsClicked", JSON.stringify(buttonsClicked.push)); // save back
window.location = $(this).attr('href'); // now follow link
});
现在在查看加载时,您必须阅读并查看哪些已被按下:
$(document).ready(function() {
var retrievedDate = localStorage.getItem("buttonsClicked");
var buttonsClicked = JSON.parse(retrievedData);
// loop through array
buttonsClicked.each(function (index, value) {
$("#"+value).addClass("auto-stylelay1");
});
});
您可以将脚本放置在 _Layout 视图中。
注意:我没有测试过这个。让我知道它是否有效。
推荐阅读
- json - T-SQL JSON_MODIFY 错误:参数数据类型唯一标识符(日期时间、金钱等)无效
- java - 从服务类执行firebase身份验证?
- perl - 从另一个文件调用一个文件会给出打印值而不是 perl 中的返回值
- c# - 匹配 url 末尾的模式的 C# 正则表达式
- asp.net-core - 如何在 dev express 中向表单字段添加动态验证规则
- hibernate - jpa 2、使用类型sage查询,避免查询嵌套实体
- php - session_start() 未能解码会话对象。会话已被破坏错误
- php - 将数据推送到存储在另一个数组中的数组中
- jquery - 数据表,固定标题显示在屏幕底部
- css - Cloudfront 域名无法使用 S3、Cloudfront 和 Route 53 将 HTTP 重定向到 HTTPS