2012-03-07 13 views
2

私は動的にiframeを作成していますが、ある時点でjavascriptを挿入する必要があります。私は文字列だけで良いタグを追加することができますが、JavaScriptが実行可能になるようにiframeにスクリプトを再評価させる方法がありますか?何をすべきかのiframeにJavaScriptの評価を強制しますか?

簡単な例がある

、ユーザーが用意されています

<h2 onclick="doSomething();">Click me</h2> 

function doSomething() { alert('you clicked me'); } 

を私はIFRAMEの体内にHTMLをプッシュする必要がある、と私はプッシュする必要がありますjavascript文字列をiframeのスクリプトに組み込み、これを動作させます。

+0

親ウィンドウからdoSomethinh()関数を呼び出す方法を教えてください。明確にする必要があります。 –

+0

親ウィンドウからiframe内の関数を呼び出すことができます(targetFrameはiframe idと仮定します)。document.getElementById( 'targetFrame')。contentWindow.doSomething(); –

+1

申し訳ありませんが、私のポストが私がそれを望んでいた方法を書式化していないことを認識していない、それをもう一度見てみましょう。 – CDelaney

答えて

1

onclick="doSomething();"onclick="top.doSomething();に変更すると動作します。コピーされたh2は現在のウィンドウでdoSomethingと表示され、iframeではdoSomethingの機能がありません。

topキーワードを使用すると、トップウィンドウで機能するように見えます。 iframeでは、親を探すことを意味し、親を探すためには親とiframeのどちらでも動作します。別の親が存在しない限り、存在しない。

2

HTML

<!--Container of iframe, iframe will be appended to this div later--> 

​<div id='myDiv'>​</div>​ 

JS

var iframe = document.createElement('iframe'); 
iframe.frameBorder = 1; 
iframe.width = "500px"; 
iframe.height = "250px"; 
iframe.id = "iframe"; 

iframe.onload = function() 
{ 
    var doc = iframe.contentDocument || iframe.contentWindow.document; 
    var el = doc.createElement('h2'); 
    el.id="myH2"; 
    el.className="red"; 
    el.style.color="red"; 
    el.style.cursor="pointer"; 
    el.textContent = "Click me"; 
    el.onclick=doSomething; 
    doc.body.appendChild(el); 
} 

document.getElementById("myDiv").appendChild(iframe); 

function doSomething() 
{ 
    alert("OK"); 
}​ 

ここfiddleです。

関連する問題