我正在尝试发布表单并在新窗口中打开。适用于Chrome和Firefox,在IE中出现以下错误。
我只在IE中收到以下错误。有人可以帮我找一个解决方案或替代方案。
代码:
function SubmitForm(actionUrl, Nums ) {
var sHTML = "<form id='form1' action='" + actionUrl + "' method='post' target='MLSmap'>";
sHTML += "<input name= num type='hidden' value='" + Nums + "' />";
sHTML += "</form>";
var frmTosubmt = window.open(actionUrl, "MLSmap","width:500px; height:700px");
frmTosubmt.document.body.innerHTML = sHTML ;
frmTosubmt.form1.submit();
}
答案 0 :(得分:3)
当您从URL打开一个窗口时,您可能需要提供一点时间让浏览器处理该URL并实际打开文档,然后才能引用其内容。不同的浏览器会以不同的方式处理该时间,也可能取决于内容是否被缓存(您应该使用缓存和非缓存的URL进行测试)。
你可以这样做:
var frmTosubmt = window.open(actionUrl, "NewWindow","width:500px; height:700px");
frmTosubmt.onload = function() {
frmTosubmt.document.body.innerHTML = sHTML;
fmrTosubmt.frmMap.submit();
}
但是,如果你要更换整个身体内容,我想知道为什么你很难打开一个URL。为什么不打开一个空白窗口然后填写内容?或者,如果您要做的只是提交表单,为什么不在当前窗口中使用Ajax帖子呢?为什么要打开一个新窗口。
此外,您的屏幕截图显示frmTosubmt.form1.submit()
,但这不是HTML中的内容。您的代码显示不同的内容。不确定为什么那些不同?
答案 1 :(得分:0)
尝试jfriend00
的建议“打开一个空白窗口,然后填写内容”并且有效。
function (url, params, target) {
var form = ['<form method="POST" id= "frmpopup" action="', url, '" target="', target, '">'];
for (var key in params)
form.push('<input type="hidden" name="', key, '" value="', params[key], '"/>');
form.push('</form>');
jQuery(form.join('')).appendTo('body')[0];
window.open('', target, "width:500px; height:700px; resi");
$("#frmpopup").submit();
}
答案 2 :(得分:0)
将调用JavaScript文件的脚本块移动到关闭正文标记下方HTML页面的按钮(。
我们收到错误unable to set property 'innerHTML' of undefined or null reference
,因为我们正在尝试在加载网页之前执行我们的JavaScript文件。这意味着我们正在尝试写入技术上不存在的页面。