2013-08-16 105 views
6

我使用hammer.js爲網站觸摸菜單,並獲得:Hammer.js(IE8) - 對象不支持屬性或方法 '的addEventListener'

"Object doesn't support property or method 'addEventListener'" hammer.js, line 247 character 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

+0

這裏http://stackoverflow.com/questions/9769868/addeventlistener-not-working-in-ie8看看,嘗試修復代碼,並最終拉動的請求給開發者。 –

+0

您不需要進行拉動,您應該使用jquery版本來支持IE8/IE7。 –

+0

「你應該使用jquery版本」 - 也不起作用。 – Eirinn

回答

4

從這裏開始:

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); 
     } 
    } 
}, 

,如果它:addEventListener not working in IE8

您可以通過檢查的addEventListener的定義,就像修復代碼功能我們最終可以向開發者提出請求。

文檔:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener?redirectlocale=en-US&redirectslug=DOM%2FEventTarget.addEventListener

0

如果你需要IE8或IE7支持,你應該使用錘插件的jQuery的版本。你可以下載它here

+1

從我的理解,你仍然需要與jquery.hammer.js Hammer.js。這個錯誤在Hammer.js裏面,所以不會解決錯誤。 –

+0

所以你不明白:D,Hammer.js有兩個版本......一個是純JavaScript,不支持IE8和IE7(hammer.js),另外一個是jQuery插件版本的錘子。 js和支持IE8/IE7只是看看兼容性表https://github.com/EightMedia/hammer.js/wiki/Compatibility –

+0

他的確懂得非常感謝你,這花了我一個小時。 jQuery版本無法提供此錯誤:SCRIPT445:對象不支持此操作,我懷疑是相同的。 – Eirinn

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>

相關問題