2011-01-20 2 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

윈도우가 이미로드되어 있으므로 코드가로드 이벤트를 놓친 것 같습니다. 아직로드되어 있지 않은 경우, 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(); 
관련 문제