Różne przeglądarki mają różne implementacje DOM i zauważ, że implementacja jest odpowiedzialna za ten atrybut, a nie za użytkownika. Jednak użytkownik może zmienić domyślną wartość atrybutu.
Co do Chrome 54.0.2840.71 sprawia, że każdy atrybut.specified true, albo jest w specyfikacji DOM, albo nie, albo ma wartość, albo nie. dla przykładu, określony atrybut __test
jest zawsze prawdziwy w Chrome (wersja 54).
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div __test></div>
<script>
var div=document.querySelector("div");
var attributes = div.attributes;
var attr_test=attributes[0];
attr_test.specified=false;// "specified" is not writable and Setting it silently fails.
console.log(attr_test.specified);
</script>
</body>
</html>
tak zgadzam się, że „to jest na jego drodze do bycia depracted”.
"atrybut.specified" różni się w DOM poziom 3 od DOM level2 spec.
punkt 1.same
Prawda jeśli atrybut ten został wyraźnie podana wartość w dokumencie instancji, false w przeciwnym wypadku. Jeśli aplikacja zmieniła wartość tego węzła atrybutu (nawet jeśli kończy się on na tej samej wartości, co wartość domyślna), wówczas jest ustawiona na wartość true.
2.Differences
"DOM-Level2" ma bardziej skomplikowany stan wyroku do decydowania, czy "attribute.specified" jest prawdziwe, czy nie.
„DOM-Poziom 3” mówi
Implementacja może obsługiwać atrybuty o wartościach domyślnych z innych schematów podobnie ale aplikacje powinny używać Document.normalizeDocument() w celu zagwarantowania tych informacji jest up-to-date.
wyszukiwania specified of type boolean, readonly
w
https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-637646024
vs
https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-862529273
Czy myślisz o tym? http://www.w3schools.com/jsref/prop_attr_specified.asp – LNendza
tak, to właśnie mówię o – Hristo
Nie wiem, gdzie jest to zdefiniowane w specyfikacji, ale uznałem, że ich definicja jest całkiem adekwatna: Podana właściwość zwraca wartość true, jeśli atrybut jest określony. Zwraca wartość true, jeśli atrybut został utworzony, ale nie został jeszcze dołączony do elementu. W przeciwnym razie zwraca wartość false. Sądzę, że to jest sposób na to, że ktoś je odkłada. – LNendza