3

我们在 angular.js 应用程序中使用了大量自定义标签,我正试图让 IE8 识别它们。设置:

  • 角度 (1.1.5)
  • HTML5 模式
  • 在许多情况下对指令使用自定义标签(我们不会R替换它们)
  • 使用 IE-shiv.js 将自定义标签注册到 IE8

这是一个很大的应用程序——我们在 IE-shiv.js 中在 IE 中注册了 50 多个自定义标签(我们喜欢使用自定义标签的标记的易读性)。我已经通过该应用程序多次,寻找我忘记注册的标签,但我仍然得到Error: Unexpected call to method or property access.undefined. 我目前正在打开和关闭应用程序的某些部分以找到有问题的标签......但感觉可能有更好的方法:

我可以检测到哪个自定义 HTML 标记触发了 IE8 中的错误吗?有没有什么鬼鬼祟祟的方法 - 猴子打孔 document.createElement 或者添加一个 try/catch 到一些内部角度指令,也许?

4

2 回答 2

9

加载文档后运行此 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));
} 
于 2013-07-29T20:10:06.593 回答
1

我已经通过指令发生了这种情况。我构建了一些自定义指令并使用了限制:“AE”。然后我使用 HTML 中的指令作为元素,例如:

 <my-directive>

我将指令更改为使用属性并且它正在工作。

 <div my-directive> 

简而言之,IE 无法识别新元素。有一些技巧可以让它工作,但我只是避开了元素并一直在使用属性。希望你的问题是这么简单,否则IE8可能会让你刺伤自己的眼睛!!!

于 2013-07-29T19:40:38.983 回答