Chrome Dev Tools: Seitenkontext und oberer Frame?

8

Was machen diese Drop-Downs? Ich nehme an, dass sie Konsolenbefehle in verschiedenen Kontexten ausführen, aber ich sehe seltsame, unsinnige Entscheidungen, wenn ich auf sie klicke.

    
John Tomson 25.09.2013, 20:01
quelle

1 Antwort

13

Nehmen Sie Gmail als Beispiel und sehen Sie sich zunächst das erste Dropdown an:

Liste der Frames

Was Sie hier sehen können, sind alle Frames, die in die aktuelle Seite eingebettet sind. Jeder dieser Frames ist Sandboxed. Sandboxed bedeutet, dass kein Zugriff von einer Sandbox auf die anderen Sandboxes möglich ist. Skripte, die innerhalb eines Frames ausgeführt werden, können nicht auf DOM- oder JS-Variablen des anderen Frames zugreifen. Aus Sicherheitsgründen möchten wir nicht, dass ein Skript in einem iframe Zugriff auf die Seite hat, in die es eingebettet wurde. So könnten z. B. in einem Blog eingebettete Anzeigen lesen, was Sie gerade schreiben oder was Sie in Ihren Cookies speichern ).

Liste der Kontexte

Im zweiten Dropdown haben wir eine Liste von Kontexten für ausgewählte Bilder, z. Hier ist eine Liste von Kontexten für Gmail <top frame> :

Dies sind Sandboxen, die für jedes Skript erstellt wurden, das von der Chrome-Erweiterung in den ausgewählten Frame eingefügt wurde (diese Skripts werden als " Inhalte bezeichnet Skripte '). Diese unterscheiden sich jedoch von den Frame-Sandboxen, die ich bereits erwähnt habe. Skripte, die von Chrome-Erweiterungen injiziert werden, haben unbegrenzten Zugriff auf das DOM der Seite, in die sie injiziert wurden, aber in einem separaten JS-Ausführungskontext namens isolierte Welt (haben keinen Zugriff auf "JavaScript-Variablen oder Funktionen von Die Seite"). In diesem Fall geht es mehr darum sicherzustellen, dass sich Skripte von verschiedenen Erweiterungen nicht gegenseitig stören, sondern nur die Sicherheit:

  

Isolierte Welten ermöglichen jedem Inhaltsskript Änderungen daran vorzunehmen   JavaScript - Umgebung ohne sich Gedanken über Konflikte mit dem   Seite oder mit anderen Inhaltsskripten. Zum Beispiel ein Inhaltsskript   könnte JQuery v1 enthalten und die Seite könnte JQuery v2 enthalten   würde nicht miteinander in Konflikt geraten.

BTW Ein Teil der URL, nachdem chrome:// für die Erweiterungs-ID steht und Sie verwenden, können Sie den Namen der Erweiterung herausfinden, die den Code injiziert hat (siehe 'Entwicklermodus' auf der chrome: // Erweiterungen / Seite).

Warum brauchen wir das?

  • Möglicherweise möchten Sie Fehler / console.* messages sehen, die von einem iframe generiert werden.
  • Beim Debuggen Ihrer Chrome-Erweiterung möchten Sie möglicherweise Fehler / console.* -Nachrichten sehen, die Ihr injiziertes Skript erzeugt hat.
  • Sie möchten möglicherweise etwas Code von der Konsole im Kontext ausführen, der sich vom Standard unterscheidet.
Konrad Dzwinel 26.09.2013 09:26
quelle