DOMTokenList#
DOMTokenList.supports()#
Metoda supports()
zwraca boolowską wartość true
jeśli przekazane słowo znajduje się w obsługiwanych słowach zdefiniowanych dla nazwy lokalnej jakiegoś atrybutu skojarzonej z danym zestawem słów DOM, w przeciwnym razie zwrócona zostanie wartość false
.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var supported = domTokenList.supports(token);
gdzie poszczególne człony oznaczają:
- supported - boolowskie
true
lubfalse
. - domTokenList - zestaw słów DOM będący obiektem kontekstu.
- token - łańcuch znakowy reprezentujący słowo wyszukiwane w obsługiwanych słowach. Wielkość znaków nie ma znaczenia.
Algorytm wywołania metody contains(token)
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Niech result będzie wynikiem zwracanym przez kroki walidacji dla obiektu kontekstu i token. Zrzuć ponownie każdy wyjątek.
- Zwróć result.
Metoda supports()
pozwala w wygodny sposób wykrywać obsługę niektórych opcji ustawianych za pomocą konkretnych wartości przewidzianych dla atrybutu skojarzonego z zestawem słów DOM. Nie wszystkie atrybuty reprezentowane przez zestaw słów DOM operują na wartościach, które mają wpływ na proces przetwarzania przez przeglądarki, dlatego też w ich przypadku obsługiwane słowa nie występują i próba wywołania metody supports()
zawsze zrzuci błąd.
Prosty przykład:
<script>
var html = document.documentElement; // referencja do elementu html
var link = document.createElement("link"); // referencja do elementu link
var iframe = document.createElement("iframe"); // referencja do elementu iframe
document.write(link.relList.supports("icon")); // true
document.write("<br>");
document.write(link.relList.supports("stylesheet")); // true
document.write("<br>");
document.write(link.relList.supports("prefetch")); // true
document.write("<br>");
document.write(link.relList.supports("alternate")); // true
document.write("<br>");
document.write(link.relList.supports("ALTERNATE")); // true
document.write("<br>");
document.write(link.relList.supports("tag")); // false
document.write("<br>");
document.write(link.relList.supports("test")); // false
document.write("<br>");
document.write(link.relList.supports("")); // false
document.write("<br><br>");
document.write(iframe.sandbox.supports("allow-forms")); // true
document.write("<br>");
document.write(iframe.sandbox.supports("allow-scripts")); // true
document.write("<br>");
document.write(iframe.sandbox.supports("allow-same-origin")); // true
document.write("<br>");
document.write(iframe.sandbox.supports("ALLOW-SAME-ORIGIN")); // true
document.write("<br>");
document.write(iframe.sandbox.supports("test")); // false
document.write("<br>");
document.write(iframe.sandbox.supports(" ")); // false
document.write("<br><br>");
try{ // Sprawdzamy istnienie obsługiwanych słów w elemencie HTML
html.classList.supports("");
}
catch(e){
document.write("Wywołanie metody contains() na elemencie HTML zrzuca błąd:" + "<br>");
document.write(e); // opis zależny od przeglądarki
document.write("<br>");
document.write(e.constructor); // function TypeError() { [native code] }
}
</script>
Na chwilę obecną jedynie przeglądarki Firefox i Chrome zaimplementowały metodę supports()
, ale tylko dla niektórych atrybutów i nie wszystkich zdefiniowanych dla nich obsługiwanych słów.
Metoda supports()
pojawia się dopiero w specyfikacji DOM4.
Składnia Web IDL#
interface DOMTokenList { boolean supports(DOMString token); }