【问题标题】:Object doesn't support property or method 'attachEvent' InternetExplorer 11对象不支持属性或方法“attachEvent” InternetExplorer 11
【发布时间】:2015-04-23 22:20:03
【问题描述】:

如果我在IE11中按下表单发送按钮“Saada”,我会得到一个错误:

Object doesn't support property or method 'attachEvent'

我发现这是一个 IE11 问题,但我找到的唯一解决方案是使用我的开发人员工具并将浏览器设置为以 IE9 模式运行例子。

但我希望每个人都可以在不使用他们的开发工具的情况下使用我的网站。
你知道我可以尝试的其他解决方案吗?或者也许我必须导入其他一些 Jquery 库?

其他浏览器运行正常,但这只发生在 IE11

【问题讨论】:

    标签: jquery wordpress forms internet-explorer-11


    【解决方案1】:

    在 IE11 中,javascript 方法 attachEvent 被替换为 addEventListener 方法。

    JQuery 1.10.1 在 IE > 8 的情况下仍然使用此方法。这会导致 javascript 编译错误。

    JQuery 1.10.2 似乎已经解决了这个问题。

    希望这会有所帮助

    【讨论】:

    • 多么晦涩难懂的版本问题,多亏了你,我们省了很多麻烦。
    【解决方案2】:

    attachEvent 是旧版本 Internet Explorer 中不推荐使用的函数。 对于现代浏览器,请改用它。

    el.addEventListener(evt,func,false);
    

    参见文档here

    您还可以创建一个函数来检查要使用的函数

    function addListener(el, event, func){
        if (el.addEventListener) {
           el.addEventListener(event, func, false);
        }
        else {
           el.attachEvent("on"+event, func);
        }
    }
    

    然后您可以通过以下方式附加您的活动:

    var element = document.getElementById('myElement');
    addListener(element, 'click', function(){
        alert('You have clicked!');
    });
    

    如果您无法做到这一点,那么也许可以使用 polyfill 代替。尝试将其插入某处:

    if(!document.attachEvent){
      Object.prototype.attachEvent=function(event,func){
        this.addEventListener(event.split('on')[1], func);
      }
    }
    

    希望对你有帮助

    【讨论】:

    • 好的,我可以简单地将这个功能添加到我的页面底部并自动修复所有内容吗?
    • 是的,如果您愿意,可以将其添加到 js 的末尾。我添加了一个如何使用它的示例
    • 我正在为 Wordpress 使用 Gravity Forms 插件,但我找不到我必须更改的提交按钮点击代码。
    • 我应该更改此代码中的某些内容吗?现在它又给了我一个错误:对象不支持属性或方法'exec'
    • 问题解决了!我使用了最新的 jquery 版本,现在它可以与 IE 一起使用。但我希望其他一切仍然有效:)
    猜你喜欢
    • 2014-02-27
    • 2019-07-05
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    相关资源
    最近更新 更多