由于bfcache,在safari中“返回”后按钮保持禁用状态

时间:2016-12-31 15:10:21

标签: javascript jquery safari browser-cache bfcache

我使用

提交表单
$('#submitbutton').attr('disabled','true');
setTimeout(function(){ $("#myform").submit(); }, 100);

在safari中,通过单击浏览器的后退按钮返回此页面时,该按钮仍处于禁用状态。

我尝试添加:

$( document ).ready(function() {
    $('#submitbutton').removeAttr("disabled");
...

但这也不起作用。

我看过网上了,这似乎与bfcache有关。 虽然我理解这个缓存的概念,以及它如何提高加载速度,但我不希望它在这个页面上。是否有一个简单的解决方案来禁用它,跨浏览器?我在网上找到的解决方案都是2-5岁,不起作用。

请注意,在Chrome中,一切正常:按钮已启用并且在单击后退按钮后执行了所有JS。

我可以实现启用页面上的按钮或类似的东西,但我真的不喜欢不同浏览器中的这种不同行为。所以我想为所有浏览器禁用bfcache,或者在所有浏览器中使用bfcache。

注意:我不想在点击后退按钮后强制页面刷新,因为这在我的页面上看起来非常难看和笨重。

2 个答案:

答案 0 :(得分:0)

通过添加此PHP代码来实现它:

<?php
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");
?>

答案 1 :(得分:0)

即使在pageshow中也可以触发事件bfcache,因此请按照以下方式编写js代码:

window.addEventListener('pageshow', function( e ){
    //your code
});