2013-08-16 13 views
6

Używam hammer.js na dotykowym menu na stronie, a uzyskanie:Hammer.js (IE8) - Obiekt nie obsługuje właściwości lub metody 'addEventListener'

"Object doesn't support property or method 'addEventListener'" hammer.js, line 247 character 13

z IE8.

Rzeczywisty kod z hammer.js że nie działa:

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

jakiś pomysł jak mogę to naprawić?

Jquery używane mieć podobny problem: http://bugs.jquery.com/ticket/11127

+0

Spójrz tutaj http://stackoverflow.com/questions/9769868/addeventlistener-not-working-in-ie8, spróbuj naprawić kod i ostatecznie wyciągnąć wniosek dla programistów. –

+0

Nie musisz wykonywać pull, powinieneś używać wersji jquery do obsługi IE8/IE7. –

+0

"powinieneś używać wersji jquery" - nie działa. – Eirinn

Odpowiedz

4

Zaczynając od tutaj: addEventListener not working in IE8

można naprawić funkcję kodu poprzez sprawdzanie definicji addEventListener jak:

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

jeśli to działa, możemy ostatecznie wyciągnąć wniosek do programistów.

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

0

Jeśli potrzebujesz wsparcia dla IE8 i IE7 należy użyć wersji jquery wtyczki młotem. Możesz go pobrać here.

+1

z tego co rozumiem, nadal potrzebujesz pliku Hammer.js z jquery.hammer.js. Błąd znajduje się w pliku Hammer.js, więc nie rozwiąże problemu. –

+0

Więc nie rozumiesz: D, Hammer.js ma dwie wersje ... jedna jest czystym JavaScriptem i nie obsługuje IE8 i IE7 (hammer.js), druga to wersja wtyczki jquery. js i wsparcie IE8/IE7 wystarczy spojrzeć na tabeli zgodności https://github.com/EightMedia/hammer.js/wiki/Compatibility –

+0

Rozumie, dziękuję bardzo to kosztowało mnie godzinę. Wersja jQuery nie działa, podając ten błąd: SCRIPT445: Obiekt nie obsługuje tej akcji, która, jak podejrzewam, jest taka sama. – Eirinn

Powiązane problemy