ユーザーがローカル マシン (Web サイトとしてホストされていない) で表示する HTML を作成するアプリケーションがあります。これは現在、IE と FireFox で正常に動作しますが、Chrome は、相互に対話するフレームを使用していることを好みません (したがって、アイテムをクリックすると、新しい html ファイルをコンテンツ フレームにロードするナビゲーション フレーム)。Chrome で安全でない JavaScript の試行が行われます - ドメインは一致する必要があります。そのため、必要なすべてのファイルを同じディレクトリ (同じドメイン内にある必要がありますか?) にある小さな例を作成しましたが、それでも問題が発生します。
私のコード例には、最初の html ページ内に 2 つの iFrame があります。最初の iFrame には、2 番目の iFrame のソースを変更するボタンがあります。かなり簡単です。
サンドボックス属性を使用してみましたが、役に立ちませんでした。
だからここに私のコードがあります:
start.htm
<body>
<iframe id="fheader" src="NewHeader.htm" name="fheader" sandbox="allow-scripts allow-same-origin allow-forms allow-top-navigation"></iframe>
<iframe id="fbody" src="BodyLime.htm" name="fbody" sandbox="allow-scripts allow-same-origin allow-forms allow-top-navigation"></iframe>
</body>
header.htm
function myClick() {
var myFrame = parent.document.getElementById("fbody");
myFrame.setAttribute("src", "BodyRed.htm");
}
<body style="background-color:Aqua">
<input id="Button1" onclick="myClick()" type="button" value="Change your neighbours colour"/>
</body>
BodyRed.htm と BodyLime.htm は、コードが機能するかどうかを示す背景色が設定された単純なページです。
また、以下のコードでフレームにアクセスしようとしましたが、フレームの属性にアクセスしようとするとすぐに同じエラーが発生します:
var myfbody = parent.fbody;
誰かが助けてくれることを願っています。