Turbolinks中的历史记录后退bug,针对带有哈希标识的页面。

3

我在Rails中使用Turbolinks遇到了一个小问题,希望你们可以帮忙解决。我使用jQuery-address为url添加hashes以执行某些javascript代码,当特定的哈希值发生时。

问题是,如果我单击后退按钮(历史记录后退),而历史记录后退引用一个带有哈希的URL,则Turbolinks似乎无法正常工作。它只是不会更改页面内容。例如,mypage.com/test2和我返回mypage.com/test1#1。

我想修复js,因此如果我使用历史记录回退到另一页并带有哈希,它应该重新加载页面以刷新内容或者使用Turbolinks手动强制刷新内容。

先感谢你们!


你能发一下你的JS代码吗? - Richard Peck
1个回答

0

没有代码的情况下,我能提供的最好信息是Turbolinks会刷新页面的<body>


委托

普通的HTML渲染是重新渲染整个页面,这意味着你的JS能够重新绑定到不同的元素。JS工作的方式是将事件绑定到特定的元素上。那个元素必须在页面上(document / DOM)本身上,以便JS可以绑定它。

Turbolinks以阻止JS将事件绑定到元素而声名狼藉。由于Turbolinks保留相同的JS在页面上,防止JS绑定。相反,您需要使用turbolinks event handlers 将您的事件绑定到DOM,并通过turbolinks进行委托,像这样:

var ready = function(){
    //your code here
};
$(document).on("page:load ready", ready);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接