由于 bfcache,在 Safari 中 "back" 后按钮保持禁用状态
Button stays disabled after "back" in safari due to bfcache
我使用
提交表单
$('#submitbutton').attr('disabled','true');
setTimeout(function(){ $("#myform").submit(); }, 100);
在safari中,点击浏览器的后退按钮返回本页时,该按钮仍处于禁用状态。
我试过添加:
$( document ).ready(function() {
$('#submitbutton').removeAttr("disabled");
...
但这也不管用。
网上查了一下,好像跟bfcache
有关。
虽然我理解这个缓存的概念,以及它如何提高加载速度,但我不希望它出现在这个页面上。是否有一个简单的解决方案来禁用它,跨浏览器?我在网上找到的解决方案都是 2-5 年的,并且不起作用。
请注意,在 Chrome 中,一切正常:按钮已启用,并且我的所有 JS 在单击后退按钮后都已执行。
我可以实现诸如启用页面离开按钮之类的功能,但我真的不喜欢不同浏览器中的这种不同行为。所以我想为所有浏览器禁用 bfcache,或者,在所有浏览器中使用 bfcache。
注意:我不想在单击后退按钮后强制刷新页面,因为这在我的页面上看起来非常丑陋和笨重。
通过添加此 PHP 代码使其工作:
<?php
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");
?>
事件pageshow
即使在bfcache
也可以触发,所以你的js代码是这样写的:
window.addEventListener('pageshow', function( e ){
//your code
});
我使用
提交表单$('#submitbutton').attr('disabled','true');
setTimeout(function(){ $("#myform").submit(); }, 100);
在safari中,点击浏览器的后退按钮返回本页时,该按钮仍处于禁用状态。
我试过添加:
$( document ).ready(function() {
$('#submitbutton').removeAttr("disabled");
...
但这也不管用。
网上查了一下,好像跟bfcache
有关。
虽然我理解这个缓存的概念,以及它如何提高加载速度,但我不希望它出现在这个页面上。是否有一个简单的解决方案来禁用它,跨浏览器?我在网上找到的解决方案都是 2-5 年的,并且不起作用。
请注意,在 Chrome 中,一切正常:按钮已启用,并且我的所有 JS 在单击后退按钮后都已执行。
我可以实现诸如启用页面离开按钮之类的功能,但我真的不喜欢不同浏览器中的这种不同行为。所以我想为所有浏览器禁用 bfcache,或者,在所有浏览器中使用 bfcache。
注意:我不想在单击后退按钮后强制刷新页面,因为这在我的页面上看起来非常丑陋和笨重。
通过添加此 PHP 代码使其工作:
<?php
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");
?>
事件pageshow
即使在bfcache
也可以触发,所以你的js代码是这样写的:
window.addEventListener('pageshow', function( e ){
//your code
});