답변:
<iframe>
요소에 대한 load
이벤트 가 있습니다.그 사건을 듣는 방법은 당신에게 달려 있지만 일반적으로 가장 좋은 방법은 다음과 같습니다.
1) 프로그래밍 방식으로 iframe 만들기
iframe load
이로 드 되기 전에 리스너를 연결하여 항상 리스너를 호출 해야합니다 .
<script>
var iframe = document.createElement('iframe');
iframe.onload = function() { alert('myframe is loaded'); }; // before setting 'src'
iframe.src = '...';
document.body.appendChild(iframe); // add it to wherever you need it in the document
</script>
2) 인라인 자바 스크립트 는 HTML 마크 업 내부에서 사용할 수있는 또 다른 방법입니다.
<script>
function onMyFrameLoad() {
alert('myframe is loaded');
};
</script>
<iframe id="myframe" src="..." onload="onMyFrameLoad(this)"></iframe>
3) 또한 이벤트 리스너를 부착 할 수 있는 요소 후 돌며, <script>
태그,하지만이 경우, iframe이 이미 당신이 당신의 청취자를 추가에 도착하는 시간에 의해로드되는 약간의 가능성이 있음을 유의하십시오. 따라서 iframe이 매우 빠르거나 캐시에서 오는 경우와 같이 호출 되지 않을 수 있습니다.
<iframe id="myframe" src="..."></iframe>
<script>
document.getElementById('myframe').onload = function() {
alert('myframe is loaded');
};
</script>
또한 이 유형의 이벤트를 발생시킬 수있는 요소 에 대한 다른 답변을 참조하십시오load
위의 답변 중 어느 것도 나를 위해 효과가 없었지만 이것은
업데이트 :
@doppleganger가 아래에서 지적했듯이 jQuery 3.0부터로드가 사라 졌으므로 다음을 사용하는 업데이트 된 버전이 on
있습니다. 이것은 실제로 jQuery 1.7 이상에서 작동하므로 jQuery 3.0이 아닌 경우 에도이 방법으로 구현할 수 있습니다.
$('iframe').on('load', function() {
// do stuff
});
load
사라졌습니다. .on('load', function() { ... })
대신 사용하십시오 .
jquery
경우 jqLite
다음이 방법입니다!
이를 위해 바닐라 자바 스크립트 에는 또 다른 일관된 방법이 있습니다 ( IE9 +에만 해당 ).
const iframe = document.getElementById('iframe');
const handleLoad = () => console.log('loaded');
iframe.addEventListener('load', handleLoad, true)
그리고 Observables에 관심이 있다면 트릭을 수행하십시오.
return Observable.fromEventPattern(
handler => iframe.addEventListener('load', handler, true),
handler => iframe.removeEventListener('load', handler)
);
handleLoad()
iFrame 렌더링을보기 전에 중단 점에서 디버거가 중지되는 것이 문제 입니까? 나는 그것이 컨텐츠 로딩 문제가 아닌 순수한 렌더링 문제이기를 바랍니다.
오프 스크린 일 때 iframe이로드되면 onload 이벤트가 발생하지 않는 것 같습니다. "새 창에서 열기"/ w 탭을 사용할 때 자주 발생합니다.
이 방법으로 jquery ready 이벤트를 캡처 할 수도 있습니다.
$('#iframeid').ready(function () {
//Everything you need.
});
다음은 실제 예입니다.