外部ページから iframe に読み込まれたページにアクセスする方法を理解するのに苦労しています。どちらのページもローカル ファイルで、私は Chrome を使用しています。
私は外側のページと多くの内側のページを持っています。外側のページには常に内側のページのページ タイトルを表示する必要があります (私のアプリケーションでは意味がありますが、この簡略化された例ではあまり意味がありません)。これは AppJS では問題なく動作しますが、このアプリをブラウザで直接動作させるように依頼されました。「発信元が「null」のフレームが、発信元が「null」のフレームにアクセスすることをブロックしました。プロトコル、ドメイン、およびポートが一致する必要があります。
これは、ローカル ファイルに関する Chrome の同一生成元ポリシーによるものだと思いますが、問題を直接解決するのには役立っていません。同じ生成元ポリシーを回避する方法 ごとに window.postMessage メソッドを使用することで、この簡素化された例の問題を回避できます。ただし、この例を超えて、外側のページから内側のページの DOM を操作したいと考えています。これにより、コードがよりクリーンになるため、メッセージを投稿してもうまくいきません。
外のページ
<!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>
内部ページ
<!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");
Per iFrame がローカル html ファイルからローカル html ファイルをロードするときに、Chrome の将来のリリースで contentWindow/contentDocument がサポートされる可能性はありますか? 、フラグ付きでChromeを起動してみた
--allow-file-access-from-files
しかし、結果に変化はありませんでした。
Disable same origin policy in Chromeごとに、フラグを付けて Chrome を起動してみました
--disable-web-security
しかし、やはり結果に変化はありませんでした。
per document.domain = document.domain は何をしますか? 、両方のページにコマンドを実行させました
document.domain = document.domain;
これにより、エラー "起点 "null" を持つフレームが起点 "null" を持つフレームにアクセスするのをブロックしました。アクセスを要求するフレームは "document.domain" を "" に設定しましたが、アクセスされているフレームはそうではありませんでした。 両方を設定する必要があります " document.domain" を同じ値に変更して、アクセスを許可します。 "
楽しみのために、両方のページでコマンドを実行しました
document.domain = "foo.com";
これにより、「Uncaught Error: SecurityError: DOM Exception 18」というエラーが発生しました。
もがいてます。より知識のある人々からの助けは素晴らしいでしょう!ありがとう!