IE 11 不会加载 systemjs

IE 11 Will not load systemjs

我正在使用 SystemJS,我有一个伪引导程序文件,我用它来检查以确保在加载主脚本以执行页面加载之前满足某些条件。这是该代码的一个片段。

var obj = document.createElement('script');
obj.src = 'jspm_packages/system.js';
document.body.appendChild(obj);

此代码不执行脚本,但它确实加载了 200 代码,如 IE 开发工具中的网络选项卡所示。应该创建了一个全局对象 "System",但它不存在。查看 DOM,对象已正确创建并附加到正文。

有谁知道这是否是 IE 和 SystemJS 的严格问题?我不知道是怎么回事。我正在拔头发,就像 IE 的恶魔一样。我应该注意到,所有其他浏览器都按预期工作,提供 "System" 全局变量。

编辑 进一步的测试确保这不是 appendChild 的问题,因为使用相同方法的其他脚本在加载时执行得很好。

阅读 this article 告诉我们您的脚本可能不会 运行 在 IE11 中。特别感兴趣的行是:

"Script elements with external resources should no longer execute during appendChild."

这似乎是正在发生的事情。

编辑:可以采用另一种方法。

如果您想在 system.js 级别更改页面加载,最好在发送响应之前在服务器端进行条件检查。如果那是 不可能的 那么我建议在条件检查之后做一个重定向而不是 appendChild。

答案是IE < Edge 版本不支持promises。我需要 IE 11 的 polyfill。