首页 > 解决方案 > 在 javascript 中创建表单在 Chrome 中有效,而不是在 Edge 中?

问题描述

我有一个有趣的案例,我似乎无法解决到底发生了什么。

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

// 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。由于 Edge 运行的是 Chromium 核心,我预计它的行为会相同,但显然事实并非如此。

有任何想法吗?

谢谢。

标签: javascriptformsgoogle-chromemicrosoft-edge

解决方案


根据您的以下描述,

在此处输入图像描述

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

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

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

Edge Chromium 版本 87.0.664.55 的测试结果:

在此处输入图像描述

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

在此处输入图像描述

米歇尔已经在他的评论中提供了解决这个问题的建议。

因此,我建议您可以尝试检查并确认您使用的是哪个 Edge 浏览器来进行此测试。如果您想迁移到 MS Edge Chromium 浏览器,则可以从此链接下载。

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

感谢您的理解。


推荐阅读