【问题标题】:AngularJS directive not working on IE even with fixes即使有修复,AngularJS 指令也无法在 IE 上运行
【发布时间】:2013-05-29 07:15:53
【问题描述】:

我使用一些带有replace: 'E' 的指令来使用网站中的JQueryUI 按钮和对话框。我的指令被命名为 uiButton 和 modal。

页面是使用点击链接时触发的 javascript 函数加载的(不要设计这个烂摊子......)。

我让 AngularJS 在包含的页面上工作的唯一方法是手动引导:

angular.element(document.getElementById('contentDiv')).ready(function() {
    angular.bootstrap(document.getElementById('contentDiv'), ['myApp']);
});

当 AngularJS 被加载并与 ng-app 一起使用时,直接在 index.php 页面中,我的指令实际上甚至在 IE 中也有效。我使用了document.createElement(directive) 修复。

但是,使用导入功能,指令在 Chrome、FF 中有效,但在 IE8 中无效,它会生成 3 个 sliblings,就像写在 docs 中一样。

很遗憾,需要 IE 支持。

有人想解决这个问题吗?

【问题讨论】:

  • 您可以考虑通过使用指令作为数据属性来绕过“IE”不知道我的超级元素”这样的问题。IE 是否报告任何控制台错误?
  • IE 控制台上没有错误。使用属性确实有效,我将它们作为最后的机会。
  • document.createElement(directive) 是否也被动态调用?所有这些都可能需要在页面加载之前调用。
  • document.createElement(''); 肯定是解决方案,但我尝试将它们放在代码中的每个可能位置,但问题仍然存在。

标签: javascript internet-explorer angularjs


【解决方案1】:

您必须通过 HTML 注释将它放在 index.html 的头部:

<!doctype html>
 <head>
    <!--[if lte IE 8]>
      <script>
        document.createElement('poster');
      </script>
    <![endif]-->
</head>

参考这个:http://www.befundoo.com/blog/angularjs-directives-in-ie8/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2023-04-06
    • 2018-11-28
    • 2019-02-14
    相关资源
    最近更新 更多