9

私のコンセプトは、メイン ページのテキスト ボックスの値を iframe から更新することです。このコードは では機能しますが、およびfirefoxでは機能しません。とは同じ場所にあります。すべてのブラウザで動作させるための提案が必要です。Internet ExplorerChromemain.htmlframe.html

main.html

<!DOCTYPE html>
<html>
<head>
<title> main window </title>
</head>
<body>
Parent textbox :<input type="text" id="parentbox"></br></br></br>
<iframe src="frame.html" ></iframe>
</body>
</html>

frame.html

<!DOCTYPE html>
<html>
<head>
<title> frame window </title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
function PushValues()
{
 var frame_value = document.getElementById("framebox").value;
 window.parent.document.getElementById("parentbox").value =frame_value;
}
</script>
</head>
<body>
<input type="text" id="framebox" >
<input type="button" value ="fill" onclick="PushValues()">
</body>
</html>
4

5 に答える 5

2

セキュリティ ポリシーにより、クロスドメイン アクセスは制限されています。これは、ドメイン 1 のページをドメイン 2 に表示しようとしていて、ドメイン 1 のスクリプトからドメイン 2 のページの DOM を操作しようとした場合に発生します。サーバー上の同じ場所からページを実行している場合。これは起こるべきではありません。ただし、それらを HTML ファイルとして保存し、ブラウザで開こうとしているだけでは機能しません。あなたのコード用に 2 つの jsbin を作成しましたが、これは chrome で動作しています。以下のリンクを使用してアクセスしてみてください。

Main.html: http://jsbin.com/afazEDE/1 iframe.html: http://jsbin.com/ayacEXa/1/

クロム (F12) でコンソールを開いたままにし、塗りつぶしボタンをクリックして、JSBin の編集モードで main.html を実行してみてください。動作せず、エラーが表示されます。そのまま(JSBinの実行モードで)実行すれば動きます。

于 2013-11-19T15:11:17.073 に答える
1

Jクエリ -

function PushValues()
{
  var frame_value = $('#framebox').val();
  parent.$('body').find('#parentbox').val(frame_value);
}

それはいつも私のために働いています。

于 2013-07-22T07:30:40.417 に答える
0

jQueryを使用しているので、これを試してください

var frame_value = $('#framebox').val();
$('#parentbox', window.parent.document).val(frame_value);
于 2013-07-22T07:25:33.387 に答える
0

iframe や Internet Explorer との関連性が高い P3P ポリシーを試してみてください。iframe ドキュメントに設定された応答ヘッダー

header key= 'P3P'   header value: 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'
于 2013-11-19T12:12:09.997 に答える