(注:仅适用于FireFox)
后退前进缓存是Firefox中的缓存系统,当单击“返回”按钮时运行。它将简单地使用先前页面中的DOM,而不是重新加载整个页面(和重新请求文件)。
我正在使用一个分析服务piwik,需要将跟踪代码片段添加到页脚。添加后,后退前进缓存不再起作用。
据我所知,如果有卸载事件(或beforeunload),则BFCache会自动禁用。这很可能就是此处发生的事情。
是否有任何可以添加的内容使BFCache仍然起作用?
更糟糕的是,我不能在piwik代码下面添加任何自定义代码。那一个始终是最后一个。
我添加了下面显示的代码以尝试删除注册的任何卸载事件,但BFcache仍然无法正常工作。
$(window).unbind('beforeunload');
$(window).unbind('unload');
window.onbeforeunload = null;
window.onunload = null;
我也试过:
function UnloadHandler() {
window.removeEventListener('unload', UnloadHandler, false);
}
window.addEventListener('unload', UnloadHandler, false);
$(window).unload(function () { $(window).unbind('unload'); });
但这也不起作用。 我已经在网上放了一些样本。记得使用Firefox测试: 这个显示一个工作的BFcache(根据是否点击了后退按钮,您将获得一个不同的警报)
http://users.telenet.be/prullen/bfcache/a.html
已加载 Piwik,BFCache 不再工作
http://users.telenet.be/prullen/bfcache/b.html
已加载piwik,尝试取消onload事件,但仍无法正常工作
http://users.telenet.be/prullen/bfcache/c.html
使用 unloadhandlerhttp://users.telenet.be/prullen/bfcache/d.html
@roasted的建议
http://users.telenet.be/prullen/bfcache/e.html http://users.telenet.be/prullen/bfcache/f.html
BFCache的更多信息:
https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching
您可以在此处查看另一个行为演示:http://www.twmagic.com/misc/cache.html
如果您添加DOM元素并单击第一个链接,然后返回,那么DOM元素仍然存在。但是,如果添加了不是这种情况的onload或beforeunload事件。再次,在Firefox中测试此功能。有任何想法吗?
window.addEventListener('unload', UnloadHandler, true);
? - A. Wolff