Dokument.getElementsByTagName("*") Oder ein Dokument.alle
document.getElementsByTagName("*")
funktioniert für IE/Firefox/Opera, Aber nicht für Chrome und Safari.
document.all
funktioniert für IE/Chrom/Safari, Aber funktioniert nicht bei Firefox.
Wie kann ich damit umgehen?
Was bist du eigentlich machen willst? Es gibt wahrscheinlich einen besseren Weg zu lösen, das eigentliche problem, ohne über eine von diesen.
InformationsquelleAutor Jason | 2010-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
document.all
sollte vermieden werden, da es nicht Standards-konform. Stattdessen können Siedocument.getElementById()
für Bestimmten Knoten verwenden, oder$("*")
Für die Auswahl aller Elemente mit Hilfe von jQuery.Aber immer noch, wenn Sie verwenden möchten Dokument.alle sehen dann, dass
<!DOCTYPE>
Tag entfernt ist von deiner Seite aus, als auch die xmlns-Attribut ist auch entfernt von Ihrem<html>
tag.Nichts ändern, wie diese:
:
Habe ich es getestet auf FireFox 19.0.2 und
document.all
funktioniert gut für mich.Der Grund:, Wenn Sie die
<!DOCTYPE>
- tag sagen Sie dem browser, dass Ihre Webseite ist Beschwerde mit den standards, die sagt, dass Sie NICHT verwenden diedocument.all
im Skript, so dass der browser auch nicht erlauben.Aber wie Sie es verwenden möchten, Sie sind offensichtlich nicht nach den standards also nicht einmal die Mühe, fügen Sie die
<!DOCTYPE>
tag sonstdocument.all
wird nicht funktionieren.document.getElementById()
verwendet werden, um alle Elemente wählen und warum denkst du es ist eine gute Idee zum entfernen der "doctype"?Nur zum Spaß, versuchen Sie es mit Dokument.alle auf dieser website (doctype) und sagen Sie uns, was passiert.
InformationsquelleAutor Khurram Hassan
Versuchen wie diesem:
Oder kürzere version
Ich habe gerade überprüft und es funktioniert auf Chrome und ich Wette, dass es funktioniert auf Safari zu.
es gelöst werden, ohne mit diesen beiden
"funktioniert" ist relativ-ich lief in dieses zu versuchen, um alle untergeordneten Elemente von der doc ... in der Android/Chrome-WebKit-ich bin immer alle der Dokument-Ebene Kinder (html/head/body) bei der Durchführung Dokument.getElementsByTagName("<Sternchen>") als auch mit dem Dokument.alle, die auf der anderen Seite, Dokument.Körper.getElementsByTagName("<Sternchen>") gibt die funktioniert (sans html/head/body) - bug oder feature ist, Sie werden die Richter
beachten Sie, dass
document.all
zu false ausgewertet wird auf Chrome. Müssen Sie etwas tun, wiedocument.all !== undefined
oder für eine kurze version,'all'in document
.InformationsquelleAutor kjagiello
document.getElementsByTagName()
perfekt funktioniert in allen modernen Browsern (alles neuer als IE5).Wenn es scheint nicht zu funktionieren in Chrome oder Safari, dann ist es wahrscheinlich nur ein symptom für einen Fehler, den Sie haben, anderswo.
InformationsquelleAutor Kornel
Ich gebe zu, dass es möglicherweise Technologien heute weiß ich nicht, die es ermöglichen, für diese Art der Sache zu tun, die in der cross-browser-format, aber die Art und Weise habe ich immer zu tun hatte es in der Vergangenheit zu haben, eine Prüfung, eine Art, für welche browser Sie verwenden.
Eine einfachere Lösung, obwohl, ist, zu versuchen, führen Sie eine von Ihnen, und wenn man nichts/null/ein Fehler der anderen.
Sowieso, wenn Sie wirklich nicht wollen, zu bewältigen, dass es sich, sollten Sie eine Bibliothek aus, es wird sich für Sie (z.B. jQuery).
InformationsquelleAutor Platinum Azure
Während ich würde nicht ermutigen Sie zu tun, ein Dokument.alle, weil es bedeutet, Sie werden tun eine Menge der client-Seite Parsen, das ist einfach nicht nötig, ich verstehe es gibt eine Menge von legacy-Zeug gibt usw. Ich wollte nach eine kleine Erweiterung meiner Gedanken über eine wrapper-Methode für das Dokument.alle.
Natürlich vorausgesetzt, Sie haben ein getElementsByTagName-Funktion, die der Fall sein sollte.
document.all
zu false ausgewertet wird auf Chrome. Müssen Sie etwas tun, wiedocument.all !== undefined
oder für eine kurze version,'all'in document
zu prüfen, Ihre Präsenz.Das ist nicht wahr.
'all' in document
ist genau das gleiche wiedocument.all
. Wie geht das eval false in Chrom?InformationsquelleAutor Chris Love
Ohne ausreichende rep Kommentar auf @Khurram Hassan 's Antwort, ich werde es hier zu setzen, zusammen mit meiner Antwort auf die ursprüngliche Frage.
Erste, die ursprüngliche Frage. Meine Lösung wäre (und in meinem eigenen code, bis eine Antwort auf ein problem, mit dem ich auf dieser Seite) dokumentieren.getElementsByTagName("*"), die eigentlich jedes einzelne element Chrom. Getestet habe ich es auf google.com auf Google Chrome mit einem Profil geladen, und die acht häufigsten besuchten Websites aufgelistet, und es kam zu 356 einzelnen Elemente mit dem tag-Namen. In der fairness, diese enthalten html -, head -, body -, und andere, die wahrscheinlich nicht nützlich, aber es kam noch. Ich habe keinen Zugang zu Oper in dem moment, aber mit Chrome immer noch der Annahme, dass JavaScript-Code, ich sehe keinen Grund, warum Sie es nicht akzeptieren würden, dass in Ihrem code.
Zweite, für @Khurram hassan,
document.getElementById()
können nicht verwendet werden, in diesem Fall. Habe es gerade getestet auf Chrome und es kam mit einem Wert von null. In der Theorie nichts mit der Allgemeinen formgetElementsBy*
im Gegensatz zugetElementBy*
könnte wahrscheinlich in diesem Fall verwendet werden. So, meine frühere Antwort, können Sie auch versuchenClassName
,Name
, undTagNameNS
je nachdem, was Sie zu tun versuchen. Auf der gleichen Seite wie zuvor, getestet habe ich diese drei, und zwar nurTagNameNS
gearbeitet, der rest kam gerade die leeren Listen nicht als Fehler.Weiter, wenn es wahr ist, dass Sie nicht brauchen
<!DOCTYPE html>
im code, vielleicht könnten Sie schreiben den funktionierenden code als edit zu deiner Antwort, so dass wir es sehen können.<!DOCTYPE html>
scheint, zu den besten meines Wissens, werden die allgemein akzeptierten (und in der Regel davon ausgegangen werden, obligatorisch) Start in eine HTML-Seite. Wenn es nicht notwendig ist, dann ist das eine neue information (zumindest für mich), dass könnte sich als nützlich erweisen, entweder Debuggen oder nicht-öffentlichen Webseiten, die Straße hinunter.InformationsquelleAutor Brandon Olson