我正在使用SystemJS并且我有一个伪引导程序文件,我用它来检查以确保在加载主脚本以执行页面加载之前满足某些条件。这是该代码的片段。
var obj = document.createElement('script');
obj.src = 'jspm_packages/system.js';
document.body.appendChild(obj);
此代码不执行脚本,但它确实使用200代码加载它,如IE开发工具中的网络选项卡所示。应该创建一个全局对象“System”,但它不存在。通过DOM查看,对象被正确创建并附加到正文中。
有没有人知道这是否是IE和SystemJS的严格问题?我不知道是怎么回事。我正在把我的头发拉出来,就像往常一样,IE是恶魔。我应该注意,每个其他浏览器都按预期工作,提供“系统”全局变量。
编辑进一步测试确保这不是appendChild的问题,因为使用相同方法的其他脚本在加载时执行就好了。
答案 0 :(得分:1)
阅读this article告诉我们您的脚本可能无法在IE11中运行。特别感兴趣的是:
"在appendChild期间不应再执行具有外部资源的脚本元素。"
这似乎正是发生的事情。
编辑:可以采取其他方法。
如果要在system.js级别更改页面加载,最好在发送响应之前在服务器端进行条件检查。如果不可能那么我建议在条件检查后执行重定向而不是appendChild。
答案 1 :(得分:0)
答案是IE版本< Edge不支持promises。我需要IE 11的polyfill。