【问题标题】:Handling clicks in IE处理 IE 中的点击
【发布时间】:2013-08-20 14:21:13
【问题描述】:

我有以下设置:

Js 原型库。

具有 onclick 事件的 span 调用如下函数:

function onClickSuperFunction() {
     alert('Super function called');
     // Bla bla bla many epic things
     if (someCondition) {
          $('selectorForSameSpan').click();
          // selectorForSameSpan is a selector for the element that was originally clicked (first click is manunal)
     }
}

在除 IE 之外的所有浏览器中,一切正常。在 IE 中,点击不会被触发(当我手动点击元素时触发,但不是来自“if”的事件)。

另外,如果我更改选择器并模拟单击任何其他元素 ($('anyOtherSpanForExample')),它可以正常工作(调用该函数)。

那么... IE 会阻止自动点击同一元素吗?也许是反垃圾邮件?而且...任何解决方法?我真的需要那个点击。

注意:如果我使用原型“fire”,也会发生同样的情况。

感谢您的帮助。

【问题讨论】:

    标签: javascript html internet-explorer prototypejs prototype


    【解决方案1】:

    PrototypeJS 默认不支持触发原生浏览器事件。

    将 Event.simulate 添加到您的页面,它将允许您在 PrototypeJS 支持的所有浏览器中触发原生事件。

    计划将 Event.simulate 集成到核心中,同时这里是 Github 要点

    https://github.com/kangax/protolicious/blob/5b56fdafcd7d7662c9d648534225039b2e78e371/event.simulate.js

    【讨论】:

    • Ty,还是...为什么本地调用不起作用?通常我会问为什么只有 IE 很烂,但是……我已经问过自己很多次了……
    • 取决于 IE 的版本,它可能在元素上没有 click() 方法,但在事件缓存中列出。模拟方法会为您解决这个问题并从正确的位置触发它。
    • 我知道,这是一个很好的解决方案(因此 +1),但不幸的是我需要批准新的库,这通常需要很长时间。所以在他们批准之前,我需要完成这个本地人。
    • 我建议看一下 Event.simulate 中的代码,并用它来触发 IE 中的原生事件。
    • 这实际上是个好主意。也是唯一一个体面的,所以我会接受你的回答。
    猜你喜欢
    • 2012-01-21
    • 2023-03-22
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 2012-08-20
    相关资源
    最近更新 更多