【发布时间】:2015-11-24 19:37:17
【问题描述】:
我们在这里遇到了 IE11/Chrome 的一个奇怪问题。我们有这个小代码:
divFrmPost = document.getElementById('divFormPost');
divFrmPost.innerHTML = '<form name="formPost" method="post" \ action="http://someurl/servlet/myapp"> \
<input type="hidden" id="cd_user" name="cd_user" value="John Doe"> \
<input type="hidden" id="cod_user" name="cod_user" value="5013"> \
<input type="hidden" id="login" name="login" value="jdoe"> \
<input type="hidden" id="pwd" name="pwd" value="123456"> \
<input type="hidden" id="profile" name="profile" value="12"> \
<input type="hidden" id="" name="" value="128"> \
</form>';
frmPost = document.getElementById('formPost');
frmPost.submit();
当我们在 IE11 中运行时,表单处理正常,但是当我们在 Chrome (v44) 中运行时,它什么也不做,并且在控制台中出现此错误:
Uncaught TypeError: Cannot read property 'submit' of null
我们知道问题一定是最后一个隐藏字段,没有 id/name,但为什么它在 IE11 中有效,而在 Chrome 中无效?
编辑:在原始代码中,innerHTML 结构是单行的,我对其进行了编辑以便更好地阅读,但我忘了放反斜杠。
EDIT2:请避免评论战...
【问题讨论】:
-
我没有看到任何 id
formPost所以你不能指望document.getElementById('formPost')会返回一些东西。它可能在 IE 中工作,因为name="formPost"和变量formPost(错字)可能已经持有这种形式 -
document.formPost.submit();应该工作。
-
也许 Chrome 对它接受的内容比较挑剔。也许是因为找不到元素,因为你没有在表单标签中指定ID。
标签: javascript google-chrome internet-explorer-11