body标记末尾的脚本标记是否可以作用于表单?

时间:2012-01-11 12:18:47

标签: javascript html

我的网站需要有一个自动提交的表单,将用户(带有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>

这会在所有浏览器中始终有效吗?或者我应该使用不同的方法吗?

3 个答案:

答案 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>元素之前获得代码,否则在页面完全加载后将不会执行它。一旦你完成了,那么是的,它应该跨浏览器工作。