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

标签 javascript jquery html forms browser-history

我的页面中有以下代码,用于在 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 历史
  • 启用替换(标记)

  1. “浏览上下文”是“文档”对象所在的环境 呈现给用户。

  2. “浏览上下文”中的“文档”序列是其“ session 历史”。这 “ session 历史”将这些“文档”列为平面条目。

  3. 当我们从“ 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/

相关文章:

javascript - 这是 Node.js 中的正确代码吗? (变量作用域)

jquery - 为什么这个添加和删除类在 JQuery 中不起作用?

javascript - 确保我每次按下鼠标都会得到一个鼠标弹起事件

javascript - 正则表达式匹配引号内的尾随空格

javascript - 当前页面是否存在 jQuery

jquery - CSS 框被切断?

jquery - 如何使猫头鹰轮播中的中心图像大于其他图像?

html - 我要逃脱! Angular $ sce不处理音频文件的链接(严格上下文转义)

javascript - 使标签的首字母大写

jquery - Jssor Slider 将导航器编号替换为项目符号