Verwenden von Iframe mit lokalen Dateien in Chrome
Es fällt mir schwer, herauszufinden, wie ich von der Außenseite auf eine in einem Iframe geladene Seite zugreifen kann. Beide Seiten sind lokale Dateien und ich verwende Chrome.
Ich habe eine äußere Seite und viele innere Seiten. Die äußere Seite sollte immer den Seitentitel für die innere Seite anzeigen (in meiner Anwendung ist dies sinnvoll, in diesem reduzierten Beispiel vielleicht weniger). Dies funktioniert problemlos in AppJS, aber ich wurde gebeten, diese App direkt im Browser zum Laufen zu bringen. Ich bekomme den Fehler "Blockiert, dass ein Frame mit Ursprung "null" auf einen Frame mit Ursprung "null" zugreift. Protokolle, Domänen und Ports müssen übereinstimmen.".
Ich denke, dies liegt an der gleichen Herkunftsrichtlinie von Chrome für lokale Dateien, aber das hat mir nicht geholfen, das Problem direkt zu beheben. Ich kann das Problem in diesem reduzierten Beispiel umgehen, indem ich die window.postMessage-Methode per verwendeMöglichkeiten zur Umgehung der Politik der gleichen Herkunft. Über dieses Beispiel hinaus möchte ich jedoch auch das DOM der Innenseite von der Außenseite aus manipulieren, da dadurch mein Code viel sauberer wird und das Posten von Nachrichten nicht ganz funktioniert.
Äußere Seite
<!DOCTYPE html>
<html>
<head>
<meta name="viewport">
</head>
<body>
This text is in the outer page
<iframe src="html/Home.html" seamless id="PageContent_Iframe"></iframe>
<script src="./js/LoadNewPage.js"></script>
</body>
</html>
Innere Seite
<!DOCTYPE html>
<html>
<head>
<title id="Page_Title">Home</title>
<meta name="viewport">
</head>
<body>
This text is in the inner page
</body>
</html>
JavaScript
var iFrameWindow = document.getElementById("PageContent_Iframe").contentWindow;
var pageTitleElement = iFrameWindow.$("#Page_Title");
ProIst es wahrscheinlich, dass zukünftige Versionen von Chrome contentWindow / contentDocument unterstützen, wenn iFrame eine lokale HTML-Datei aus einer lokalen HTML-Datei lädt?Ich habe versucht, Chrome mit der Flagge zu starten
--allow-file-access-from-files
Die Ergebnisse änderten sich jedoch nicht.
ProDeaktivieren Sie dieselbe Ursprungsrichtlinie in ChromeIch habe versucht, Chrome mit der Flagge zu starten
--disable-web-security
Aber auch hier hat sich nichts an den Ergebnissen geändert.
ProWas macht document.domain = document.domain?Ich ließ beide Seiten den Befehl ausführen
document.domain = document.domain;
Dies führte zu dem Fehler "Blockiert, dass ein Frame mit Ursprung "null" auf einen Frame mit Ursprung "null" zugreift. Der Frame, der Zugriff anfordert, hat "document.domain" auf "" gesetzt, der Frame, auf den zugegriffen wird, jedoch nicht. Beide müssen "document.domain" auf denselben Wert setzen, um den Zugriff zu ermöglichen."
Zum Spaß ließ ich beide Seiten den Befehl ausführen
document.domain = "foo.com";
Dies führte zu dem Fehler "Nicht erfasster Fehler: SecurityError: DOM-Ausnahme 18".
Ich zapple. Jede Hilfe von erfahreneren Leuten wäre fantastisch! Vielen Dank!