每次访问显示一次警报
display alert once per visit
我正在研究如何在用户第一次访问网站时显示一次警报消息。在按下关闭按钮之前,该消息应在每页上都可见。我把代码放在_Layout.cshtml中,但它不起作用。
你能指出我的错误吗?
@if(Session["Alert"] != "Confirmed")
{
<div id="myAlert" class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Warning!</strong> Better check yourself, you're not looking too good.
</div>
}
<script type="text/javascript">
$(document).ready(function () {
$("#myAlert").on('closed.bs.alert', function () {
sessionStorage.Alert = "Confirmed";
});
});
</script>
每次重新加载网站/页面时都会显示警报。当按下警报关闭按钮时,脚本看起来好像没有执行。此外,会话["警报"]未设置。
sessionStorage
和服务器端Session
不是一回事!您不能将值设置为sessionStorage
并期望从服务器端Session
获得它。所以你有两个选择:
1.使用服务器端Session
更改javascript代码,将ajax请求发送到mvc操作,然后在那里将Session["Alert"]
设置为"Confirmed"。
2.使用sessionStorage
不使用@if(Session["Alert"] != "Confirmed")
,而是检查文档上的sessionStorage
,以决定是否显示警报。
第二个要求更改最小代码。以下代码将起作用:
<div id="myAlert" style="display:none" class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Warning!</strong> Better check yourself, you're not looking too good.
</div>
<script type="text/javascript">
$(document).ready(function () {
$(document).ready(function () {
// If not 'Confirmed', show #myAlert
if (sessionStorage.Alert !== 'Confirmed') {
$('#myAlert').show();
}
});
$('#myAlert .close').click(function () {
// Set 'Alert' to 'Confirmed' when user click the close button
sessionStorage.Alert = "Confirmed";
$(this).closest('#myAlert').hide();
});
});
</script>
在Page_Load子后面的代码中,我设置了会话变量:
If IsNothing(Session("visit")) Then
Session("visit") = "no"
Else
Session("visit") = "yes"
End If
在body标签中,我放置了一个onload事件:
onload="showAlert();"
然后我添加了这个小javascript函数:
function showAlert() {
var visit = '<%= Session("visit")%>';
if (visit == 'no') {
document.getElementById('id01').style.display = 'block';
}
}
当访问者第一次点击我的登录页时,他们会看到我保存在id="id01"的div中的欢迎提醒。下次访问期间,当他们访问登录页时,会话在页面加载时更改为"是",他们不会再看到警报。
相关文章:
- Javascript返回值只在循环中返回一次
- 每次访问显示一次警报
- 如何在下一次 AJAX 调用中访问从一个 AJAX 调用返回的变量
- 优化的方法;标题“;只发送一次POST请求即可访问网站
- 如何在上一次 JQuery 调用后访问 DOM
- 如何使网页一次只能访问一次?(JS+HTML)
- 使用胡须.js一次循环访问一个测验项目
- 如何使用 ajax 一次抓取一页,返回下一页链接并再次访问
- 每次访问显示一次模态
- 每 10 次访问(重新加载)显示一次 JavaScript 函数
- 如何仅访问数组中的一对元素一次
- 一次访问后显示不同的HTML代码
- 我们可以访问主流HTML页面中浏览器下一次请求的URL吗;s卸载功能
- 每次访问只执行一次js函数,刷新时再次执行
- 如何使这个点击实例只发生一次,并可访问的所有内容
- 如何使用ng repeat在一次迭代中访问(项中的项)的2个项
- 在Javascript中,如何在访问非静态私有变量时,为只在内存中驻留一次的对象提供函数
- 如何在访问主页时只显示一次欢迎信息
- Cookie自动播放<视频>每次访问仅一次
- 每次访问一次