Wie kann ich das Fenster Objekt zu erhalten, dass ein HTML-Knoten zur Verwendung von JavaScript gehört?
-
03-07-2019 - |
Frage
Durch mehrere Iframes, XUL Browser-Elemente, und so weiter, ich habe eine Reihe von Fensterobjekten in meiner XULRunner-Anwendung. Ich bin für den besten Weg, um das Fenster-Objekt, das ein bestimmte Knoten gehört zur Verwendung von JavaScript zu finden.
Also, um genauer zu sein, bestimmter Knoten x, ich brauche das spezifische Fensterobjekt zu finden, die x enthält.
Lösung
1 auf Ihre Frage, es war genau das, was ich gesucht habe und danke für den Hinweis direkt gegeben selbst beantworten.
ich gegoogelt ein wenig und nach http://www.quirksmode.org/dom/w3c_html .html Quer Browser Tabellen ich glaube, die richtige Antwort lautet:
function GetOwnerWindow(html_node)
{
/*
ownerDocument is cross-browser,
but defaultView works on all browsers except Opera/IE that use parentWinow
*/
return (html_node.ownerDocument.defaultView) ?
html_node.ownerDocument.defaultView :
html_node.ownerDocument.parentWindow;
}
Oder vielleicht noch besser:
return html_node.ownerDocument.defaultView || html_node.ownerDocument.parentWindow;
Plz lassen Sie mich Ihre Gedanken kennen.
Andere Tipps
fand ich die Kombination von Eigenschaften Ich war nach:
node.ownerDocument.defaultView
Das ist das Fenster-Objekt zurückgibt, dass der Knoten gehört. Beachten Sie, dass dies nicht in IE funktioniert.
Sie möchten verwenden self . Selbst ist ein Verweis auf das aktuelle Dokument.
Aus dem iframe:
<body>
<div id="example">Example!</div>
<script type="text/javascript">
window.onload = function () {
var exampleNode = document.getElementById('example');
exampleNode.bar = function () {
// The highest window object:
top;
// The parent node:
self;
// The parent node ( except in IE );
this.ownerDocument.defaultView;
};
};
</script>
</body>
Verfahrgeschwindigkeit Mehrere Fenster Objekte:
Im Browser-Objektmodell wird das primäre Fensterobjekt bezeichnet als oben . Andere globale Objekte werden in einer Baumstruktur angeordnet, die von oben Stielen. Mit einem Verweis auf oben , können Sie zu den anderen globalen Objekte im Baum navigieren, indem sie ihre Namen und Beziehungen , viel in der gleichen Art und Weise, wie Sie auf durchqueren die DOM .
Wenn Sie mehr Fenster-Objekte haben, wie Sie im Fall eines iframe tun (von den alten Schule mit Frame-Sets), hat der Rahmen ein Attribut namen . In Anbetracht relativ die Objekte Position zu dem oberen Fenster-Objekt können Sie den Namen des Kindes verwenden, um auf das Objekt zugreifen.
<iframe src ="/default.html" name="advertisement"></iframe>
und dann aus dem Kontext der oberen Fenster:
self.advertisement