文档就绪表单提交和浏览器历史记录

Sil*_*Fox 16 html javascript forms jquery browser-history

我的页面中有以下代码,以便在DOM准备就绪时自动在页面上提交表单:

$(function () {
    $('form').submit();
});
Run Code Online (Sandbox Code Playgroud)

但是,在下一页上,如果用户点击back他们的浏览器,它将返回到此页面之前的页面,而不是打开此代码的页面(无论如何都使用Chrome/IE).即浏览器历史记录中缺少包含表单的页面.

这很棒,虽然我想知道现在所有现代浏览器都能做到这一点吗?我正在寻找一个答案,引用官方来源,如来自互联网标准文件或浏览器供应商,说明他们已实施的机制.

这似乎只有在我调用submit()DOM ready或Window load事件中的函数时才会发生.

例如,此代码将在单击页面(后退/前进)后显示浏览器历史记录中的表单页面: -

document.addEventListener('click', function () { document.forms[0].submit(); }, false);
Run Code Online (Sandbox Code Playgroud)

以下片段不会: -

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(); };
Run Code Online (Sandbox Code Playgroud)

GLE*_*LES 8

我以前处理过这个问题.我不想back button让用户回到上一页.使用onbeforeunload为我解决了问题......

但是您的问题与以下概念有关

  • 浏览上下文
  • 会话历史
  • 替换已启用(标记)

  1. "浏览上下文"是向用户呈现"文档"对象的环境.

  2. "浏览上下文"中的"文档"序列是其"会话历史"."会话历史记录"将这些"文档"列为平面条目.

  3. 当我们在"会话历史"中从一个"文档"传播到另一个"文档"时,"替换已启用"生效.如果通过"Replacement Enabled"启动遍历,则删除紧接在指定条目之前的条目(在"会话历史记录"中).

注意 Web浏览器中的选项卡或窗口通常包含浏览上下文,框架集中的iframe或框架也是如此.


从逻辑上思考,通过调用其中任何一个

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();};
Run Code Online (Sandbox Code Playgroud)

建议浏览器执行#3,因为这些调用意味着它一加载就会从页面传播开来.即使对我来说代码显然是:)要求从"会话历史"中清除.

进一步阅读......