2011-02-07 6 views
0

iframe에서 json을 얻으려면 어떻게해야합니까? jsonp가 아닌 것은 제가 가진 것입니다. (자바 스크립트 만 사용) 물론iframe에서 json을 가져 오는 중 - jsonp가 아님

<script type="text/javascript"> 
var theFrame = document.getElementById('iframe'); 
      var theWin = theFrame.contentWindow; 
      var theDoc = theFrame.contentDocument || theFrame.contentWindow.document; 
var json = theDoc; 
var msgs = JSON.parse(theDoc); 

for (var i = 0, l = msgs.length; i < l; i++) { 
    var msg = msgs[i]; 
    var div = document.createElement('div'); 
    div.innerHTML = 'Hello ' + msg.user + ' your Id is: ' + msg.ID + 'and your message is: ' + msg.message + ' it has ' + msg.replies + ' replies'; 
    document.body.appendChild(div); 

</script> 

<iframe id="iframe" name="iframe" src="http://jsonsource.com/not/jsonp/" width="100" height="100"> 
    <p>Your browser does not support iframes.</p> 
</iframe> 

답변

2

iframe은 XHR과 동일한 원본 정책이 적용됩니다. 따라서 목표를 달성하는 것이 목표라면 잊어 버리십시오. 목표를 달성하지 못하는 경우 XHR 대신 iframe을 사용해야하는 이유는 무엇입니까 (API가 훨씬 좋음)?

즉, 분명히 코드에 잘못된 것은 iframe이 존재하기 전에 액세스하려고한다는 것입니다. 스크립트를 그 다음으로 이동하십시오.

+0

네, 저의 목표 중 하나입니다. iframe의 문서 텍스트를 어떻게 얻을 수 있을까요? 내 json으로 구문 분석 할 수 있습니까? – Dakota

+2

은행 웹 사이트를 iframe에로드하고 브라우저에서 비밀번호를 입력 한 다음 JavaScript로 읽을 수 있습니다 - ** 아니요! ** 당신은 같은 원점을 원한다면 그것을 제공하는 서버는 데이터를 실행 가능한 JavaScript (JSON-P)로 제공해야하거나 요청을 한 페이지와 같은 출처를 통해 프록시해야합니다 . – Quentin

+0

@Dakota 요청한 페이지와 동일한 도메인에있는 경우 iframe의 콘텐츠 만 가져올 수 있다고 생각합니다. – Adrian

0

iframe의 contentDocument.documentElement.textContent 속성에 액세스하여 원하는 것을 얻을 수 있습니다. (IE에서는 textContent가 아닌 innerText입니다.)

+0

iframe이 요청 페이지와 동일한 도메인에있는 경우에만 작동합니다. 그래서 이것은 다코타가하고자하는 것에 대해서는 효과가 없을 것입니다. – Adrian

관련 문제