我的页面中有以下代码,用于在 DOM 准备就绪时自动提交页面上的表单:
$(function () {
$('form').submit();
});
但是,在下一页上,如果用户在他们的浏览器上单击返回,它将返回到此页面之前的页面,而不是带有此代码的页面(无论如何使用 Chrome/IE)。即浏览器历史记录中缺少带有表单的页面。
这很棒,虽然我想知道现在所有现代浏览器都这样做吗? 我正在寻找引用官方来源的答案,例如来自互联网标准文档或来自浏览器 vendor 的说明他们已实现的机制。
这似乎只有在我在 DOM 就绪或窗口加载事件中调用 submit()
函数时才会发生。
例如单击页面(后退/前进)后,此代码将在浏览器历史记录中显示表单页面:-
document.addEventListener('click', function () { document.forms[0].submit(); }, false);
以下片段不会:-
document.addEventListener('DOMContentLoaded', function () { document.forms[0].submit(); }, false);
window.addEventListener('load', function() { document.forms[0].submit(); }, false);
window.onload = function () { document.forms[0].submit(); };
最佳答案
我以前处理过这个问题。我不希望后退按钮
占用
用户返回上一页。使用 onbeforeunload
解决了
问题对我来说...
但你的问题与以下概念有关
- 浏览上下文
- session 历史
- 启用替换(标记)
“浏览上下文”是“文档”对象所在的环境 呈现给用户。
“浏览上下文”中的“文档”序列是其“ session 历史”。这 “ session 历史”将这些“文档”列为平面条目。
当我们从“ session 历史”中的一个“文档”传播到另一个“文档”时,“启用替换”生效。如果遍历是在“启用替换”的情况下启动的,则删除紧接在指定条目之前的条目(在“ session 历史记录”中)。
Note A tab or window in a Web browser typically contains a browsing context, as does an iframe or frames in a frameset.
逻辑思维,通过调用其中任何一个
document.addEventListener( 'DOMContentLoaded', function() {document.forms[0].submit();}, false );
window.addEventListener( 'load', function() {document.forms[0].submit();}, false );
window.onload = function() {document.forms[0].submit();};
您建议浏览器执行#3
,因为这些调用的含义
是它一加载就从页面传播开来。即使对我来说,代码也是
显然 :) 要求从“ session 历史记录”中清除。
进一步阅读...
关于javascript - 文档就绪表单提交和浏览器历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24653064/