2011-01-20 7 views
0

IFrameを動的に作成してから、フレームがロードされるときに実行するコードでscriptタグを追加します。実行されることはありません。IFrameの動的スクリプトがwindow.onloadをトリガーしない

$stage.html("<iframe src='javascript:;' id='frame'></iframe>"); 
$frame = $("#frame"); 

frame = $frame[0].contentDocument ? $frame[0].contentDocument : $frame[0].contentWindow.document; 

script= frame.createElement('script'), 
head = frame.getElementsByTagName("head")[0]; 

script.innerHTML = "window.onload = function() { alert('loaded'); }"; 

head.appendChild(script); 

私はコードがIFrameに追加される前にwindow onloadイベントがトリガされると仮定しています。とにかくそれが呼ばれていることを確認するにはありますか?また、JSベースのコードエディタの場合のように、window.onloadに含まれる必要があります。そのため、iframeはブラウザウィンドウと同じように反応する必要があります。乾杯。

+0

私はこのウィンドウが既にロードされているので、コードがonloadイベントを見逃していると思います。まだロードされていない場合、getElementsByTagNameは失敗します。私はこれについてはよくわからないので、正式な回答にしなかった。 – qwertymk

+0

良い点。 iframeにコードを挿入して 'window.onload'で実行させる別の方法はありますか? – Louis

+0

多分.ready? –

答えて

2

window.write()で解決しました。

frame = document.createElement("iframe"); 
frame.src = "javascript:;"; 
document.body.appendChild(frame); 

win = frame.contentWindow; 
win.document.open(); 
win.document.write(html); 
win.document.close();