[JQUERY] 어떻게 jQuery를 사용하여 IFrame을의 DOM을 노출?
JQUERY어떻게 jQuery를 사용하여 IFrame을의 DOM을 노출?
해결법
-
1.당신이 window.frames 배열을 사용할 수있는 프레임 윈도우 객체를 얻으려면 :
당신이 window.frames 배열을 사용할 수있는 프레임 윈도우 객체를 얻으려면 :
var iframewindow= frames['iframe_name'];
이것은 당신이
var iframewindow= frames[0];
그것은 DOM에서 iframe 요소에서 iframe이 창을 얻기 위해 일반적으로 더 유연하지만, 이것은 IE에 대처하는 몇 가지 호환성 코드가 필요합니다 :
var iframe= document.getElementById('iframe_id'); var iframewindow= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;
jQuery를 그 내용 () 문서의 노드를 잡기 위해 메소드를 정의하지만, 여전히 붙어있는, 그래서 그것은 당신에게 창에 문서에서 갈 수있는 크로스 브라우저 방법을 제공하지 않습니다
var iframe= $('#iframe_id')[0]; var iframewindow= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;
이는 정말 큰 승리가 아닙니다.
(참고 :.. 프레임 간 스크립팅을 위해 jQuery를 사용하여 매우 조심 각 프레임은 한 프레임의 사본에서 자신의 jQuery 사본 및 방법을 필요로 할 다른 크로스 프레임 스크립팅에서 노드에서 반드시 작업과 주제의 고민입니다 트랩.)
-
2.
var iframe = $('iframe').contents(); // iframe.find('..') ...
var parent = $(window.parent.document); // parent.find('..') ...
부모와 iframe이 페이지가 동일한 도메인에있는 경우에만 적용됩니다.
<iframe id="iframe1" src="iframe1.html"></iframe> <iframe id="iframe2" src="iframe2.html"></iframe>
$(function () { var iframe1 = null, iframe2 = null; // IE8/7 var frameInterval = window.setInterval(function () { iframe1 = $('#iframe1').contents(); iframe2 = $('#iframe2').contents(); if ($('head', iframe1).length && $('head', iframe2).length) { window.clearInterval(frameInterval); } }, 100); // on iframe loaded $('#iframe1').on('load', function (e) { iframe1 = $('#iframe1').contents(); }); $('#iframe2').on('load', function (e) { iframe2 = $('#iframe2').contents(); }); });
( '로드') 라인에와 IE9 작업을 포함한 모든 주요 브라우저. 만 IE8 / 7 필요 간격 블록.
-
3.UPDATE @RoyiNamir의 코멘트 :
UPDATE @RoyiNamir의 코멘트 :
var frames = window.frames || window.document.frames;
은 iframe에서 창.
frames["myIframeId"].window
은 iframe의 문서
frames["myIframeId"].window.document
은 iframe의 몸에
frames["myIframeId"].window.document.body
JQuery와있는 iframe 대응의 몸에
var iframeBody = $(frames["myIframeId"].window.document).contents().find("body");
중대한: 당신은 항상이와 작품에 대한 문서가 상태이다 "완료"확인해야합니다
if (frames["myIframeId"].window.document.readyState=="complete") { //ok } else { //perform a recursive call until it is complete }
from https://stackoverflow.com/questions/1654017/how-to-expose-iframes-dom-using-jquery by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] HTML5 폼 검증을 트리거링 (0) | 2020.10.15 |
---|---|
[JQUERY] 주문은 <UL> / <OL>에서 jQuery를 가장 쉬운 방법은 무엇입니까? (0) | 2020.10.15 |
[JQUERY] 키를 입력 시뮬레이션 JQuery와 (또는 순수 JS)의 테스트를 누르면 (0) | 2020.10.15 |
[JQUERY] 정지는 GIF 애니메이션 온로드, 마우스 오버에 활성화를 시작합니다 (0) | 2020.10.15 |
[JQUERY] 하나 개의 어레이에 병합이 JSON / 자바 스크립트 배열 (0) | 2020.10.15 |