65

iframeのスクリプト

<script type="text/javascript" >
var a=5;
</script>

親ウィンドウのスクリプト

<script type="text/javascript" >
function close()
{
var check=document.getElementById("iframeid").contentDocument.a;
alert(check)
}
</script>

親からiframe内で定義されている変数にアクセスしたい。しかし、上記のコードは適切に機能しません。これを実装するアイデアを誰でも提供できます。

4

6 に答える 6

67

私のために働くcontentWindow代わりに使用:contentDocument

var check = document.getElementById("iframeid").contentWindow.a;

また、ドメインが一致していること、およびテストに Web サーバーを使用していることを確認してください (ファイル システムからテストすると、プロトコルの警告が表示されました)。

更新postMessage: APIを使用する方がほぼ間違いなく優れています。

于 2012-12-07T06:44:56.037 に答える
20

私にとって常に確実に機能する方法の 1 つは、iFrame が最初に読み込まれるときに親に独自のウィンドウへの参照を与えることです。親は、その参照を介してすべての変数にアクセスできます。これには、親が iFrame の前に読み込まれる必要がありますが、私にとっては通常そうです。

だから親で

var iFrameWin;

次に、iFrame がロードされて落ち着いた後のある時点で

parent.iFrameWin = window;  //parent now has a ref to the iframe's window

次に、親で、iFrame からのグローバル var コンテンツが必要な場合

alert(iFrameWin.ivar);  // shows value if the global 'ivar' in the iFrame
于 2014-08-22T22:05:37.713 に答える
3

これがあなたのために働くかどうか見てください:

このparent.htmlページを作成し、iframeウィンドウから渡された値を表示するテキスト入力を含むiframeをそのページに配置しました。

 <html>
     <head>
     <title>IFrame Example</title>
     <script language="javascript">
          function hello(string){
               var name=string
               document.getElementById('myAnchor').value=name;
           }
     </script>
     </head>
     <body>
         <iframe namne="iframe" id="iframe_id" src="inputForm.html" height="150" >
         </iframe>
         Name: <input type="text" id="myAnchor" >
         </body>
</html>

そしてこのiframe contentページ:

<html>
   <head>
   <title>IFrame Child Example</title>
   </head>
   <body>
   <form name="frm2" >
      <h1><font color="#000099">Input Form</font></h1>
      <p>Name : </p><input type="text" name="resp" id="input" value=""/>
      <input type="button" onclick="parent.hello(this.form.resp.value);" value="Submit" />
   </form>
 </body>
</html>

ボタンをクリックすると、親ウィンドウに値が表示されます。

これで何かを手に入れたら、それで遊んでください。

于 2012-12-07T07:15:51.497 に答える
1

document.getElementById('ID_OF_IFRAME').document.getElementById('f1')

クロスドメインの制限は引き続き適用されることに注意してください。

于 2012-12-07T06:20:31.120 に答える