2015-04-19 10 views
6

Ein Weg wäre zu überprüfen, ob es eine .shadowRoot -Eigenschaft für ein Element gibt, aber ich muss einen booleschen Wert zurückgeben, bevor die Seite gerendert wird.Wie überprüft man, ob ein Browser Shadow-DOM unterstützt

+0

Da Sie Ihren Code ausführen, bevor der Rest der Seite trotzdem lädt, alles blockiert, bis Ihr Code fertig ist, erstellen Sie ein Element, überprüfen Sie, entfernen Sie es, fahren Sie fort. – Nit

Antwort

8

Ein einfacher Feature-Test wäre:

if(document.head.createShadowRoot || document.head.attachShadow) { 
    // I can shadow DOM 
} else { 
    // I can't 
} 

Dies funktioniert sogar, wenn Sie das Skript im Kopfteil enthalten und übernimmt keine bösartigen Skripte vor Ihnen hinzugefügt wurden (eine sichere Annahme).

Derzeit unterstützen Chrome, Opera und abgeleitete Browser (wie Android-Browser) es. Für weitere Informationen, besuchen Sie: http://caniuse.com/#feat=shadowdom

+0

Gibt es etwas, gegen das ich in 'window' nachsehen kann? Ich muss testen, bevor die Seite geladen wird (Selen). – Indolering

+0

nm, scheint dies in wdio.io Setup/vor Funktion zu funktionieren. Immer noch an einer Antwort interessiert. – Indolering

+1

das hat in Safari 10.1 ein falsches Negativ, da es v0 ist. V1 verwendet 'attachShadow' –

Verwandte Themen