Wie kann ich das Fenster Objekt zu erhalten, dass ein HTML-Knoten zur Verwendung von JavaScript gehört?

StackOverflow https://stackoverflow.com/questions/223991

  •  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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top