【发布时间】:2013-08-31 22:26:55
【问题描述】:
我想编写一个 javascript 代码,它可以在 window.onpopstate 或 window.onload 上执行某些操作,但从不执行两次(请注意,chrome 在 onload 和单击后退导航按钮时都会触发 popstate 事件)
我希望它兼容主流的现代浏览器(IE10 firefox chrome opera safari)
而且我宁愿不使用任何库 - 甚至不使用 jquery。
类似这样的东西(当然要使用正确的语法):
window.onload || window.onpopstate = function(){
window.alert("hello world");
}
谢谢
编辑 1
根据您的建议,我已经尝试过:
var ranAlready=false;
window.onload = function(){
if (!ranAlready){
window.alert("onload was true");
ranAlready=true;
}
};
window.onpopstate = function(){
if (!ranAlready){
window.alert("popstate was true");
ranAlready=true;
}
};
但现在我不确定如何将变量设置回 false.. 因为它取决于浏览器等等..
编辑 2
我需要它不止一次地工作,因为用户可能会点击一些 ajax 链接,所以页面不会刷新,但 url 会改变,因此他可能会点击后退按钮。这意味着必须在某个时刻将变量设置回 false / 但我不知道何时..
【问题讨论】:
-
使用变量检查是否已经运行?
-
那行得通吗?我很困惑,因为我不知道如何控制时间流,例如,该变量会在我检查它之前还是之后或同时取值..?
-
以及之后如何将其设置回 false ..?
标签: javascript onload onload-event popstate