Hammer.js(IE8)-对象不支持属性或方法“addEventListener”

6

我正在为网站使用hammer.js制作触摸菜单,但是在IE8中遇到以下错误:

"对象不支持属性或方法'addEventListener'" hammer.js, 第247行第13个字符

原因是hammer.js中的以下代码无法工作:

/**
 * simple addEventListener
 * @param   {HTMLElement}   element
 * @param   {String}        type
 * @param   {Function}      handler
 */
bindDom: function(element, type, handler) {
    var types = type.split(' ');
    for(var t=0; t<types.length; t++) {
        element.addEventListener(types[t], handler, false);
    }
},

你有什么想法可以解决这个问题吗?

Jquery 以前也有类似的问题: http://bugs.jquery.com/ticket/11127


请查看此处https://dev59.com/TGkw5IYBdhLWcg3wm70g,尝试修复代码并最终向开发人员提交请求。 - Irvin Dominin
你不需要进行拉取操作,应该使用jQuery版本来支持IE8/IE7。 - Vinícius Moraes
你应该使用 jQuery 版本。- 这个也不起作用。 - Eirinn
3个回答

4
从这里开始:addEventListener在IE8中不起作用 您可以通过检查addEventListener的定义来修复代码函数,例如:
bindDom: function (element, type, handler) {
    var types = type.split(' ');
    for (var t = 0; t < types.length; t++) {
        if (!element.addEventListener) {
            element.attachEvent(types[t], handler);
        } else {
            element.addEventListener(types[t], handler, false);
        }
    }
},

如果它起作用,我们最终可以向开发人员发出请求。
文档:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener?redirectlocale=en-US&redirectslug=DOM%2FEventTarget.addEventListener

0

试一下。 https://github.com/egjs/hammerjs-compatible

<!--[if IE 8]>
<script type="text/javascript" src="../dist/hammerjs.compatible.js"></script> <- like this.
<![endif]-->
<script src="../bower_components/hammer.js/hammer.js"></script>


0
如果您需要支持IE8或IE7,您应该使用Hammer插件的jQuery版本。您可以在这里下载它。

1
据我所了解,你仍然需要使用 Hammer.js 和 jquery.hammer.js。错误出现在 Hammer.js 内部,因此这并不能解决错误。 - Kalvin Klien
所以你不理解 :D,Hammer.js 有两个版本...一个是纯 JavaScript 版本,不支持 IE8 和 IE7(hammer.js),另一个是 Hammer.js 的 jQuery 插件版本,支持 IE8/IE7,请查看兼容性表 https://github.com/EightMedia/hammer.js/wiki/Compatibility - Vinícius Moraes
他非常理解,谢谢。这让我浪费了一个小时。jQuery版本也不起作用,显示错误:SCRIPT445:对象不支持此操作,我怀疑是同样的问题。 - Eirinn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接