13

Ist es möglich zu erkennen, ob bestimmte Ereignisse in bestimmten Browsern unterstützt werden? Ich kann erkennen, ob der Browser document.addEventListener unterstützt, aber ich muss wissen, ob es das Ereignis DOMAttrModified unterstützt. Firefox und Opera unterstützen es, aber Chrome und andere nicht.Javascript - Erkennen, ob Event Lister unterstützt wird

Danke, wenn jemand helfen kann!

+1

Ich glaube nicht, es ist möglich, aber hier Unterstützung für IE und Chrome zu sehen, wie gut: http://help.dottoro.com/ljdchxcl.php –

+0

Thankyou, aber schon Ich habe Arbeitslösungen für alle Browser. Ich hatte gehofft, ich könnte herausfinden, ob bestimmte Browser das Ereignis unterstützten, damit ich meine alternativen Methoden anwenden kann. Es scheint, dass ich auf jQuery.browser Erkennung zurückgreifen muss. –

Antwort

15

Aktualisiert Antwort:

Ja, Sie können dieses Feature-Erkennung. Erstellen Sie ein Element, warten Sie auf das Ereignis und ändern Sie ein Attribut für das Element. In meinen Tests müssen Sie das Element nicht einmal zur DOM-Struktur hinzufügen, was dies zu einer netten, integrierten Feature-Erkennung macht.

Beispiel:

function isDOMAttrModifiedSupported() { 
    var p, flag; 

    flag = false; 
    p = document.createElement('p'); 
    if (p.addEventListener) { 
     p.addEventListener('DOMAttrModified', callback, false); 
    } 
    else if (p.attachEvent) { 
     p.attachEvent('onDOMAttrModified', callback); 
    } 
    else { 
     // Assume not 
     return false; 
    } 
    p.setAttribute('id', 'target'); 
    return flag; 

    function callback() { 
     flag = true; 
    } 
} 

Live copy

Firefox löst den Rückruf bei allen der obigen Modifikationen; Chrome auf keinem von ihnen.


Ursprüngliche Antwort:

Sie können funktions erkennen, ob einige Ereignisse unterstützt werden, wie auf this handy page gezeigt. Ich weiß nicht, ob Sie speziell dafür testen können, aber wenn Sie können, kann dieser Code Sie vielleicht beginnen.

aktualisieren: Ich dumped Kangax's code into JSBin und versuchte es, sieht nicht so aus, dass Sniffing Technik funktioniert für dieses Ereignis (es sei denn, ich den Namen falsch geschrieben oder etwas haben, Firefox „false“ angezeigt wird). Aber meine Technik oben tut es.

+0

wow, 'document.body: klick? falsch "in FF 4 !! – ifaour

+0

@ifaour: Wow, das ist ** seltsam. Auch FF 3.6. Und doch wissen wir alle, dass das nicht stimmt ... –

+0

ppk states [hier] (http://www.quirksmode.org/dom/events/index.html#link2), dass das Ereignis 'DOMAttrModified' nicht funktioniert mit dem traditionellen 'onEvent'-Ereignisregistrierungssystem, das ist also wahrscheinlich der Test, den Sie dort haben, der nur nach der 'onEvent'-Eigenschaft im Element sucht. –

0
function isDOMAttrModifiedSupported() { 
    var supported = false; 
    function handler() { 
     supported = true; 
    } 
    document.addEventListener('DOMAttrModified', handler); 
    var attr = 'TEST'; 
    document.body.setAttribute(attr, 'foo'); // aka $('body').attr(attr, 'foo'); 
    document.removeEventListener('DOMAttrModified', handler); 
    document.body.setAttribute(attr, null); 
    return supported; 
    } 
Verwandte Themen