dtb*_*ker 3 javascript wordpress
解决:找到答案:WordPress window.history.replaceState在每个页面加载时使用。这样可以防止在刷新/返回时重新提交POST。原始问题如下:
我知道这里有许多发布/重定向/获取问题。这个有点不同。我找不到解释该特定JavaScript解决方案的答案。
当您通过POST提交表单,然后点击刷新按钮时,浏览器将提示我重新提交数据。但是,此提示不会在WordPress后端(启用JS时)发生,并且发布后没有重定向/获取。
我尝试在下面的一系列屏幕快照中显示此内容。它显示了第一次POST提交,并在页面上打印了POST数据,然后刷新导致GET,而没有任何浏览器重新提交提示。
当我禁用JavaScript并单击刷新时,会出现预期的“您是否想重新提交数据?”。提示,刷新将导致第二次POST。
因此,WordPress在这里做了一些JavaScript魔术,以防止在刷新/返回按钮上重新提交POST数据。
谁能指出我在WordPress中显示仅使用JavaScript即可实现此目标的代码?我什至不知道从哪里开始搜索。
他们用pushstate做些什么吗?
谢谢!
解决方案:WordPress window.history.replaceState在每次页面加载时使用。
这样可以防止POST刷新或后退按钮再次运行。
好漂亮!
非WordPress概念证明在这里:https : //dtbaker.net/files/prevent-post-resubmit.php
代码是:
<script>
if ( window.history.replaceState ) {
window.history.replaceState( null, null, window.location.href );
}
</script>
Run Code Online (Sandbox Code Playgroud)