iFrame jQuery에서 요소 선택


122

애플리케이션에서 웹 페이지를 구문 분석하고 iFrame의 다른 페이지에로드합니다. 로드 된 페이지의 모든 요소에는 tokenid-s가 있습니다. 해당 tokenid-s로 요소를 선택해야합니다. 의미-메인 페이지의 요소를 클릭하고 iFrame의 페이지에서 해당 요소를 선택합니다. jQuery의 도움으로 다음과 같은 방식으로 수행하고 있습니다.

function selectElement(token) {
     $('[tokenid=' + token + ']').addClass('border'); 
}

그러나이 기능을 사용하면 iFrame이 아닌 현재 페이지의 요소 만 선택할 수 있습니다. 아무도로드 된 iFrame에서 요소를 어떻게 선택할 수 있는지 말해 줄 수 있습니까?

감사.

답변:


157
var iframe = $('iframe'); // or some other selector to get the iframe
$('[tokenid=' + token + ']', iframe.contents()).addClass('border');

또한 src이 iframe의가 다른 도메인을 가리키는 경우 보안상의 이유로 자바 스크립트에서이 iframe의 콘텐츠에 액세스 할 수 없습니다.


8
$ ( 'iframe')은 iframe을 직접 반환하지 않습니다. 어레이에서 꺼내야합니다.
McKayla 2011-06-11

기꺼이 도와 주셔서 감사합니다. 그러나 이것은 작동하지 않는 것 같습니다.
cycero 2011-06-11

3
@cycero, 작동합니다. 이 iframe을 동적으로 생성하고 있습니까? 이 iframe의 src 요소를 보안상의 이유로 다른 도메인을 가리키면 해당 콘텐츠에 액세스 할 수 없다는 점을 잊지 마십시오.
Darin Dimitrov

다른 도메인이 아닌 동일한 폴더에서로드합니다. iFrame 콘텐츠는 동적으로 생성되고 서버에 파일로 저장됩니다. 그런 다음 해당 파일이 iFrame에로드됩니다.
cycero 2011-06-11

@cycero, 내 대답을 업데이트했습니다. 통과 시도iframe.contents()
Darin Dimitrov

52

이 게시물을 살펴보십시오 : http://praveenbattula.blogspot.com/2009/09/access-iframe-content-using-jquery.html

$("#iframeID").contents().find("[tokenid=" + token + "]").html();

찾기 메소드에 선택기를 배치하십시오.

그러나 iframe이 서버에서 나오지 않으면 불가능할 수 있습니다. 다른 게시물에서는 권한 거부 오류에 대해 설명합니다.

jQuery / JavaScript : iframe의 콘텐츠에 액세스


그것은 요소의 HTML을 얻는 측면에서 작동하지만 선택한 요소에 CSS 클래스를 추가하려면 어떻게해야합니까? $ ( "# iframeDiv"). contents (). find ( "[tokenid ="+ token + "]"). addClass ( "border"); 작동하지 않는 것 같습니다.
cycero 2011-06-11

1
권한 거부 오류가 발생합니까? 나에게 iframe의 html을 줄 수 있습니까?
Kevin Bowersox 2011 년

아니요, 권한 거부 문제가 없습니다.
cycero 2011 년

20

문서가 준비되면 iframe도 준비된 것은
아니므로 iframe로드 이벤트를 수신 한 다음 콘텐츠에 액세스해야합니다.

$(function() {
    $("#my-iframe").bind("load",function(){
        $(this).contents().find("[tokenid=" + token + "]").html();
    });
});

-3

케이스가 콘솔 (예 : Chrome Dev Tools)을 통해 IFrame에 액세스하는 경우 드롭 다운을 통해 DOM 요청의 컨텍스트를 선택할 수 있습니다 (그림 참조).

Chrome 개발자 도구-iFrame 선택


-9

다음은 컨테이너에서만 div를 드래그 할 수 있도록하는 간단한 JQuery입니다.

$("#containerdiv div").draggable( {containment: "#containerdiv ", scroll: false} );
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.