2016-06-24 25 views
0

私はmain.htmlというiframe(たとえば、id="myFrame")のページにchild.htmlというページがあります。 これらのページのには、「フレームを非表示」というボタンがあります。これらのボタンのonclickはmain.jsファイルで宣言されたhideFrame() JS関数を呼び出します。 hideFrame()関数は、myFrameの表示を "none"に変更するだけです。 main.htmlでボタンがときhideFrame()関数を呼び出すよう他のHTMLページでHTMLページの要素にアクセスできるようにする

function hideFrame(){ 
    document.getElementById("myFrame").style.display = "none"; 
} 

myFramemain.htmlファイルであり、それは動作します。フレームが非表示になります。しかし、私はchild.htmlページから関数を呼び出すと同じことが動作していません。

この要素(myFrame)のフォームchild.htmlにアクセスするにはどうすればよいですか?

+0

可能な重複置く必要があります://のstackoverflowを。 com/questions/7570496/get-the-document-object-of-an-iframe) –

+1

[iframeからの親ウィンドウ関数の呼び出し]の可能な複製(http://stackoverflow.com/questions/2161388/calling-a - 親ウィンドウ関数if-an-iframeから) – Quantastical

答えて

1

あなたが使用する必要があります(この場合は#myFrameで)すると

var _parent = window.parent, _parent_dom = _parent.document;は親ページから要素へのアクセスを得るために:ここでは親ウィンドウへのアクセスを取得するものです関数を割り当てるmain.htmlのウィンドウオブジェクト。だからではなく、

function hideFrame(){ 
    document.getElementById("myFrame").style.display = "none"; 
} 

のあなたは今、関数がグローバルmain.htmlとのウィンドウにスコープされ

window.hideFrame = function(){ 
    document.getElementById("myFrame").style.display = "none"; 
} 

ような何かをするだろう。

子フレームには独自のウィンドウオブジェクトがあります。 child.htmlから関数を呼び出すには、親ウィンドウオブジェクトにアクセスする必要があります。

main.htmlとから、あなたは、クリックonclick = hideFrame()上で正常にhideFrameを呼び出すことができますが、child.htmlをして、あなたは(HTTP [IFRAMEのドキュメントオブジェクトの取得]のonclick = window.parent.hideFrame()

1

iFrameを使用する代わりに、jqueryを使用して他のファイルからHTMLファイルのセグメントをロードします。

これが不可能な場合は、親のオブジェクトを参照する子フレームにJavascriptコードを挿入することができます。例:

子:

<script> 
    var x; 
</script> 

は親:

<script> 
    $("#myFrame").x = function(){ 
     functionality/reference definitions 
    } 
</script> 
1

それはあなたが言っているかを理解するためにしばらく時間がかかりました。私が理解していることから、iframeの内側からトップウィンドウの要素にアクセスする必要があります。

var my_frame = _parent_dom.getElementById("myFrame");

関連する問題