在 javascript 中创建表单在 Chrome 中有效,在 Edge 中无效?

Creating form in javascript works in Chrome, not in Edge?

我有一个有趣的案例,我似乎无法解决这到底是怎么回事。

我需要以编程方式创建一个表单并将其作为 post 请求发送。我的请求然后 returns 一些 html 布局并将其绘制到 post 编辑请求的 window。这就是我在底部创建新 window 的原因。 我的解决方案如下

// 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 中我得到以下错误 Object doesn't support property or method "Symbol.iterator"。它发生在我通过 appendChild 将表格附加到新打开的 window 的线上。由于 Edge 是 运行 Chromium 核心,我预计它会表现相同,但显然它不会。

有什么想法吗?

谢谢。

看看这个:

似乎是 Edge 没有在 NodeList 中实现 for ... of/in 的问题。

也许可以尝试使用 for (var key in Array.from(params))

根据您的以下描述,

您似乎假设您使用的是 Edge Chromium 浏览器,但根据我的测试结果,您似乎使用的是 Edge 旧版 浏览器。

我尝试在 Edge Chromium 浏览器和 Edge legacy 浏览器中测试您的示例代码。

您的代码在 Edge Chromium 浏览器中运行良好,并给出与 Google Chrome 浏览器相同的结果。

Edge Chromium 版本 87.0.664.55 的测试结果:

您的代码在 Microsoft Edge 旧版本 44.19041.423.0 中的同一行中给出以下错误:

Michel 已经在他的评论中提供了解决此问题的建议。

所以我建议您可以尝试检查并确认您使用的是哪种Edge浏览器来进行此测试。如果您想移动到 MS Edge Chromium 浏览器,那么您可以从 this link.

下载它

如果我对您的描述有任何误解,请告诉我,我会尽力纠正自己。

感谢您的理解。