在javascript中创建表单在Chrome中工作,而不是在Edge中?
我有一个有趣的案例,关于到底发生了什么,我似乎无法解决 我需要以编程方式创建一个表单,并将其作为post请求发送。然后,我的请求返回一些html布局并将其绘制到发布请求的窗口。这就是我在底部创建新窗口的原因。 我的解决办法如下在javascript中创建表单在Chrome中工作,而不是在Edge中?,javascript,forms,google-chrome,microsoft-edge,Javascript,Forms,Google Chrome,Microsoft Edge,我有一个有趣的案例,关于到底发生了什么,我似乎无法解决 我需要以编程方式创建一个表单,并将其作为post请求发送。然后,我的请求返回一些html布局并将其绘制到发布请求的窗口。这就是我在底部创建新窗口的原因。 我的解决办法如下 // Define params var path = someRequestPath; var params = { DOCNAME: 'DocumentName', FORMAT: 'A4', ORIENTATION: 'Landscape',
// Define params
var path = someRequestPath;
var params = {
DOCNAME: 'DocumentName',
FORMAT: 'A4',
ORIENTATION: 'Landscape',
HTML: htmlContent
};
// Create form to submit request
var form = document.createElement('form');
form.method = "POST";
form.action = path;
// Set form params
for (var key in params) {
if (params.hasOwnProperty(key)) {
var hiddenField = document.createElement('input');
//hiddenField.type = 'hidden';
hiddenField.name = key;
hiddenField.value = params[key];
form.appendChild(hiddenField);
}
}
//Create window and submit form
var win = window.open('', 'windowName', 'width=1400,height=1200');
win.document.body.appendChild(form);
form.submit();
win.focus();
现在这个解决方案在Chrome中运行得非常好,但在Edge中我得到以下错误
对象不支持属性或方法“Symbol.iterator”
。它发生在我通过appendChild
将表单附加到新打开的窗口的第行。由于Edge运行的是Chromium core,所以我希望它的行为会相同,但显然不是这样
有什么想法吗
谢谢。看看这个:
这似乎是Edge没有为…实现的问题。。。节点列表中的of/in
也许可以尝试使用
for(数组中的var key.from(params))
从下面的描述中
看起来您正在使用Edge Chromium浏览器,但根据我的测试结果,看起来您正在使用Edge legacy浏览器
我尝试在Edge Chromium浏览器和Edge legacy浏览器中测试您的示例代码
您的代码在Edge Chrome浏览器中运行良好,并提供与Google Chrome浏览器相同的结果
边缘铬版本87.0.664.55的测试结果:
您的代码在Microsoft Edge旧版44.19041.423.0的同一行中出现以下错误:
米歇尔已经在评论中提出了解决这一问题的建议
因此,我建议您可以尝试检查并确认您在进行此测试时使用的边缘浏览器。如果要移动到MS Edge Chromium浏览器,则可以从下载
如果我对你的描述有任何误解,请告诉我,我会尽力改正
谢谢你的理解。我试过了,没用。当我的错误发生时,这个迭代已经完成,并且正确创建了
form
元素,包含所有必要的输入。但是谢谢你的提示。:)如果使用win.document.write()
或win.document.body.innerHTML=
而不是appendChild()
,会发生什么情况?使用win.document.body.innerHTML=form.outerHTML
可以绕过我的问题,但是form
不会附加到子窗口并调用form.submit()
在这种情况下,会导致父窗口的内容被覆盖。但从这一点来看,假设表单
结构中存在问题是正确的吗?看看好的,我不知道文档中的表单可以这样访问。那很有效,非常感谢。不过,我还是很好奇为什么appendChild
不起作用。我的猜测是:blank的结构在Chrome和Edge中是不同的,或者当Edge尝试附加到emptybody
时失败了,而Chrome创建了一些默认结构?您好,Deepak,非常感谢您的回答!我确实在运行Edge的遗留版本。由于软件部门发生了什么,我们开发人员没有得到Chromium版本。老实说,我甚至没有意识到这一点,因为我主要使用Chrome,但我们的一些用户运行Edge,所以这次我不得不在那里进行测试。