javascript - 在 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 核心,我预计它的行为会相同,但显然事实并非如此。
有任何想法吗?
谢谢。
解决方案
根据您的以下描述,
看起来您假设您使用的是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 浏览器,则可以从此链接下载。
如果我对您的描述有任何误解,请告诉我,我会尽力纠正自己。
感谢您的理解。
推荐阅读
- apache-spark - pyspark.sql.utils.AnalysisException:找不到数据源:kafka
- tomcat - 无法从互联网访问托管 apache openmeeting 的 ubuntu localhost
- url - 在 SSRS 2017 中使用“转到 URL”打开目录窗口
- python - Python 和 JSON - 直接与项目交互
- c# - MVVM 模式中的去抖动事件/命令
- php - 警告:为过滤器上的 foreach() 提供的参数无效
- python - 从屏幕管理器屏幕问题向字段传递值
- java - 用于treeAnno的tomcat 9 context.xml中的JDBC URL问题
- javascript - 如何避免与 React hooks 相关的范围问题
- json - 新项目角