首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript和浏览器的“后退/前进”按钮

问JavaScript和浏览器的“后退/前进”按钮
EN

Stack Overflow用户
提问于 2013-07-31 05:05:24
回答 1查看 792关注 0票数 0

我有一些JavaScript,如果在ASP.Net的Session中存在值,它会显示一个通知。这可能不是我现在学到的最好的解决方案,但下面是代码:

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        if (Session["Alert"] != null)
        {
            Page.ClientScript.RegisterStartupScript(GetType(), "alert", Session["Alert"].ToString());
            Session["Alert"] = null;
        }
    }
}

Session["Alert"]有显示通知的JS函数:

代码语言:javascript
复制
Session["Alert"] = "showAlert('test')";

function showAlert(msg) {
    alert(msg);
}

如果已为其赋值,则代码将成功运行,并显示通知。单击浏览器的“后退”按钮,然后单击“前进”按钮,将再次显示警报,因为页面不会经历其生命周期。

如何防止警报多次显示?我尝试添加一个全局JavaScript变量,如var alertShown = false;,并在showAlert函数中检查该变量,但不起作用。

有没有跨浏览器的方法可以绕过这个问题?

EN

回答 1

Stack Overflow用户

发布于 2013-07-31 05:09:19

好吧,对于初学者来说,你必须避免使用客户端的导航缓存(通常后退/前进实际上并不会将页面拉回原处)。

在这个障碍之后,您可以(讽刺地)使用一个会话变量来存储它是否被查看过的输出,并且只将其转储到页面一次。

如果这看起来很多,您可以在函数中添加cookie检查,这样当它运行(并重新运行)时,它会检查cookie,如果没有cookie,则会发出警报并设置cookie。伪码:

代码语言:javascript
复制
function showAlert(msg){
  if (cookie[msg] == null){ // a cookie doesn't exist for this msg
    alert(msg); // alert the msg
    cookie[msg] = true; // set the cookie so the next pass is ignored
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17957385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档