【问题标题】:NgBlur not firing in Internet explorerNgBlur 没有在 Internet Explorer 中触发
【发布时间】:2015-04-10 03:31:42
【问题描述】:

我有一个简单的下拉菜单,它在单击按钮时显示并在单击时隐藏 单击下拉列表中的按钮或用户单击页面上的其他任何位置。代码在 chrome 中工作,但在 IE 中不工作。看起来 section 上的 ng-blur 事件永远不会在 ie 中触发

我正在使用 IE11 和 AngularJS 1.2.3。代码在 Chrome 中运行良好。

// some other html here
<section tabindex="0" ng-blur="menu.isOpen=false"> // main section
    <div ng-click="toggle()">
        <div>button</div>  //button opening  dropdown
    </div>
    <div ng-show="menu.isOpen">
       <div>
           <ul>
                <li name="Sign Off" ng-click="toggle()">Sign off</li>
           </ul>
       </div>
    </div>
</section>
// here rest of page

toggle() 方法很简单:

menu.isOpen=!menu.isOpen;

更新:

经过更多调查,我知道section 永远不会得到焦点,所以它永远不会变得模糊。它以某种方式隐藏在他体内的 div 之下。设置 z-index:1500 没有帮助。

【问题讨论】:

    标签: javascript html angularjs internet-explorer


    【解决方案1】:

    根据 angularjs 源代码,ng-blur 用于以下元素:

    窗口、输入、选择、文本区域、a

    也许您可以将“section”替换为“a”,然后在 ie11 中重试?

    'a' css 可以配置样式属性。

    【讨论】:

    • 有趣。你能在源代码中给出那个文件的url吗?如果这是真的,为什么在 chrome 中它可以工作?
    • 为什么它在一个浏览器中工作而不在另一个浏览器中工作:我不知道
    • 检查了这个,在更改为a 后仍然没有触发
    • 我赞成你的问题。抱歉,它没有用。我想你需要访问 ie11 来解决这个问题。
    【解决方案2】:

    Tabinidex 应该可以解决这个问题。 为了让它工作,每个包含 tabindex 属性的元素都应该有一个大于 0 的连续唯一编号。

    在您的情况下,我会假设由于您使用的是 tabindex=0 而无法正常工作。如果将其切换为 1,如果代码中其他任何地方都没有 tabindex=1 的其他元素,它可能会起作用。

    我们遇到了同样的问题,对我们有用的是在正文中使用 tabindex 属性作为 1,并从包含 ng-blur 的元素中删除所有 tabindex 属性。

    欲了解更多信息:tabindex

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 2010-12-23
      • 2012-02-13
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      相关资源
      最近更新 更多