我在导轨中遇到了一些恼人的问题,我希望有些人可以帮助我。
我使用jQuery-address将哈希值添加到我的网址,以便在发生特定哈希值时执行一些javascript。
问题是Turbolinks似乎不起作用,如果我单击后退按钮(历史记录返回)并且历史记录返回指的是带有哈希的URL。它根本不会改变页面内容。例如。 mypage.com/test2然后我回到mypage.com/test1#1。
我想制作一个js修复程序,所以如果我使用历史记录返回另一个带有哈希的页面,它应该重新加载页面以刷新内容或者只是强制使用Turbolinks手动刷新内容。
提前致谢!
答案 0 :(得分: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);