2013-05-16 2 views
8

이번이 처음입니다. 내 페이지에 iframe을 작성했으며 iframe부터 jquery까지 텍스트를 원합니다.iframe에서 데이터 가져 오기

<html> 
    <head><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 

    <script type="text/javascript"> 
    function copyIframeContent(iframe){ 
     var iframeContent = $(iframe).contents(); //alert(iframeContent); 
     //$("#result").text("Hello World"); 
     $("#result").html(iframeContent.find('body').html);alert(iframeContent.find('body').html()); 
    } 
    </script> 
    </head> 
    <body> 
    <iframe id="myIframe" onload="copyIframeContent(this);" name="myIframe" src="text.php"></iframe><br /> 
    Result:<br /> 
    <textarea id='result'></textarea> 
    <input type="button" value="click" id="btn" onclick="aa()"> 
    <script type="text/javascript"> 
     function aa(){ alert("Fdf"); 
      alert(document.getElementById('myIframe').contentWindow.document.body.innerHTML); 
    } 
    </script> 
    </body> 
</html> 

text.php :

text to change 

내가 모든 브라우저에서 많이 시도했지만 여전히 작동하지 않습니다 다음은 내 코드입니다. 누구든지이 콘텐츠를 얻을 수 있도록 도와 줄 수 있습니까?

+0

예 그 동일한 페이지와 같은 디렉토리 –

+1

"하지만 여전히 작동하지 않습니다."그게 무슨 뜻인지 궁금합니다. 어떤 –

+0

이 여기에 복사/붙여 넣기를 할 수 있지만 오류 메시지가 나타나면 정교하게 작성하십시오. 그래도 현재는 작동하지 않습니다. (ObectObject) –

답변

0

contentWindow 당신을 위해 트릭을 할 수

document.getElementById('myFrame').contentWindow.document.body  

당신에게 DOM 요소 본체 줄 것이라고

또한 시도 할 수있는 일이

window.frames['myIframe'].document.body  

처럼 FF와 크롬 모두에서 작동 또한

브라우저에 문제가있을 수 있습니다. 보안에. 로컬 컴퓨터에서 실행하는 경우. 브라우저 보안을 비활성화하는 방법이 있습니다.

+0

먼저 텍스트를 iframe의 텍스트에서 가져온 다음 div (결과) –

+0

(document.getElementById ('myFrame') .contentWindow.document.body) .appendchild (div (결과)) http://www.w3schools.com/dom/met_element_appendchild.asp –

2

iFrame의 DOM을 사용하려면 .contents()을 사용하십시오.

$('#myIframe').contents() 

는 UPDATE :

$("#result").html(iframeContent.find('body').html); 

말을해야 : 영업에서

$("#result").html(iframeContent.find('body').html()); 
+0

OP는 이미 내용() –

+0

을 사용 중입니다. 경고합니다. 경고하고 "alert"에서 "obect Object"를 얻습니다. 상자 –

+0

'$ ('# myIframe'). contents(). find ('body') .html()'너무? .contents()만이 jQuery를 반환합니다. –

0

JQuery와 활용하기가 좀 더 쉬울 것이다 :

,
$('Your Selector', frames['myIframe'].document) 

위의 예는 myIframe에서 얻을 수 있습니다. 그러나 iframe은 반드시 상위 문서와 동일한 도메인에 있어야합니다. 동일한 도메인이 아닌 경우 보안 위반이 발생합니다. 외부 사이트의 콘텐츠를 페이지에 추가하고 해당 콘텐츠를 변경할 수 없습니다.

보안 위반이 없으면 선택 항목으로 무엇이든 할 수 있습니다. 예를 들어 jquery append() 메서드를 사용하여 iFrame에 새 html을 삽입 할 수 있습니다. html() 메서드를 사용하여 html 또는 jquery/pure javascript에서 허용하는 다른 함수를 바꿀 수 있습니다.

1
var content=$("iframe").contents().find('body').html(); 

alert(content); 
+5

히야,이 방법으로 문제를 해결할 수는 있지만 ... * 답을 수정하고 작동 방법 및 이유에 대한 설명을 조금이라도 주면 좋을 것입니다. 잊지 마세요 - 초보자의 힙이 있습니다. 스택 오버플로가 발생하면 전문 지식에서 두 가지를 배울 수 있습니다. 분명하지 않은 부분이있을 수 있습니다. –

관련 문제