我有脚本,什么工作一次窗口加载,它在这个页面上工作,但网站使用一些导航链接没有完全重新加载页面(请参阅此答案,例如:Modify the URL without reloading the page)。如何检测并再次运行我的脚本?
我有一个想法:在变量中存储URL(没有锚点)并使用当前URL定期检查它,但我认为这是不好的解决方案。可能你知道的更好吗?
可以使用JavaScript或JQuery。
答案 0 :(得分:0)
我认为您正在寻找可以收听此事件的哈希变更server
onhashchange
您还可以检查在hashchange
之后更新url的内容 window.onhashchange = function(e) {
var sublink = window.location.hash.substring(1);
//do your thing here
}
答案 1 :(得分:0)
那是因为新页面是
1)已经准备好了,只是被jQuery带入了视线
2)Ajax调用了。
如果您搜索导航(您点击的链接转到其他页面),您应该找到<a href="someUrl" data-attr="someUrlMaybe">click me</a>
左右。
如果您查找绑定的任何地方(即:$('#navigation a').on("click", function(){});
,您只需将脚本包装在一个函数中,并在每次加载新页面的同时触发此函数。(显然,在它之后)
我希望我能更清楚,但你自己没有提供任何代码,所以我完全不知道我应该在这里给出什么样的例子。
- 重点:那些页面更改是由您的javascript中的某些内容触发的。找到使页面更改发生的触发器,只需插入myCustomFunction();
。
如果您想使用新DOM更新绑定,可以使用:
function setBindings(){
//removing the old bindings prevents the "click" from triggering twice.
$('a').off("click");
$('a').on("click", function(){
//load page and such here
//Apply script you want to run here
setbindings(); //rerun the function to set the bindings.
});
}
答案 2 :(得分:0)
我认为脚本的URL是缓存的,你使用Ajax get方法吗?如果是,请 喜欢这个写url“wwww.baidu.com?"+Math.random();if不是,在firefox中,你可以使用pageshow事件。