我的网站需要有一个自动提交的表单,将用户(带有POST数据)发送到外部网站。以前,我使用的是这样的HTML:
<html>
<head></head>
<body onload="document.forms[0].submit()">
<form name='form1' method='post' action='externalwebsite.com'>
<input type='hidden' name='cartId' value='1337'>
<input type='hidden' name='currency' value='USD'>
<input type='hidden' name='amount' value='9'>
</form>
</body>
</html>
但是,由于onload
事件在页面生命周期中很晚才触发,因此导致页面加载与提交的表单之间出现长时间延迟。
Javascript库具有domready
事件,以允许代码在onload
事件触发之前,但仍然可以安全地操作DOM树。例如,使用Mootools库,我可以这样做:
window.addEvent('domready', function () {
document.forms[0].submit();
});
但是,我不想为这么简单的页面添加一个庞大的JavaScript库。因此,我有以下HTML:
<html>
<head></head>
<body>
<form name='form1' method='post' action='externalwebsite.com'>
<input type='hidden' name='cartId' value='1337'>
<input type='hidden' name='currency' value='USD'>
<input type='hidden' name='amount' value='9'>
</form>
<script type='text/javascript'>document.forms[0].submit()</script>
</body>
</html>
这会在所有浏览器中始终有效吗?或者我应该使用不同的方法吗?
答案 0 :(得分:2)
在关闭正文标记之前放置脚本
<html>
<head></head>
<body>
<form name='form1' method='post' action='externalwebsite.com'>
<input type='hidden' name='cartId' value='1337'>
<input type='hidden' name='currency' value='USD'>
<input type='hidden' name='amount' value='9'>
</form>
<script type='text/javascript'>document.forms[0].submit()</script>
</body>
</html>
答案 1 :(得分:1)
是的,它会起作用(除非禁用JavaScript),并且会在HTML加载到浏览器后立即执行。它不会等待加载图像,脚本等,就像onload
解决方案一样。
答案 2 :(得分:1)
你现在的方式,它将无法正常工作。您必须在结束是的,它应该跨浏览器工作。</body>
元素之前获得代码,否则在页面完全加载后将不会执行它。一旦你完成了,那么