如何在不重新加载的情况下检测页面导航?

时间:2016-09-09 22:40:41

标签: javascript jquery html

我有脚本,什么工作一次窗口加载,它在这个页面上工作,但网站使用一些导航链接没有完全重新加载页面(请参阅此答案,例如:Modify the URL without reloading the page)。如何检测并再次运行我的脚本?

我有一个想法:在变量中存储URL(没有锚点)并使用当前URL定期检查它,但我认为这是不好的解决方案。可能你知道的更好吗?

可以使用JavaScript或JQuery。

3 个答案:

答案 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事件。