6

我正在使用hammer.js 作为网站的触摸菜单,并获得:

“对象不支持属性或方法‘addEventListener’”hammer.js,第 247 行字符 13

用IE8。

来自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

4

3 回答 3

4

从这里开始:addEventListener not working in IE8

您可以通过检查addEventListenerlike 的定义来修复代码功能:

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

于 2013-08-16T19:47:08.060 回答
0

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

于 2013-08-20T19:12:27.400 回答
0

试试看。 https://github.com/egjs/hammerjs-兼容

<!--[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>

于 2015-12-24T06:18:38.930 回答