我们在我们的 angular.js 应用程序中使用了大量的自定义标签,我正试图让 IE8 识别它们。设置:
- Angular (1.1.5)
- HTML5模式
- 在许多情况下为指令使用自定义标记(我们不会
R
替换它们) - 使用 IE-shiv.js 向 IE8 注册自定义标签
这是一个很大的应用程序——我们在 IE-shiv.js 中注册了 50 多个自定义标签(我们喜欢自定义标签的标记清晰易读)。我已经多次浏览该应用程序,寻找我忘记注册的标签,但我仍然收到 Error: Unexpected call to method or property access.undefined
。我目前正在打开和关闭应用程序的某些部分以查找有问题的标签...但感觉可能有更好的方法:
我可以检测哪个自定义 HTML 标记触发了 IE8 中的错误吗? 是否有一些偷偷摸摸的方法 - monkey-punching document.createElement 或向某些内部 Angular 指令添加 try/catch?
最佳答案
加载文档后运行此 JS。它将找到所有标签名称以 /
字符开头的元素,这是在 IE8 中为解析器遇到关闭标签时所有无法识别的元素创建的。
var list = document.getElementsByTagName('*');
for (var i = 0, len = list.length; i < len ; i++) {
if (list[i].tagName.indexOf('/') === 0)
alert(list[i].tagName.substr(1));
}
关于html - 确定哪个自定义 HTML 标记冒犯了 IE8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17932470/