从iframe中获取json - 而不是jsonp

时间:2011-02-07 22:23:59

标签: javascript html json iframe

我如何从iframe获取json,这不是jsonp,这就是我所拥有的。 (当然只使用javascript)

<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 个答案:

答案 0 :(得分:2)

iframe遵循与XHR相同的原始政策。因此,如果您的目标是绕过它,那就别忘了。如果您的目标不是要解决这个问题,为什么要使用iframe而不是XHR(它有更好的API)?

也就是说,代码中唯一明显错误的是您尝试在iframe存在之前访问它。将脚本移到后面。

答案 1 :(得分:0)

您可以通过访问iframe的contentDocument.documentElement.textContent属性来获得所需内容。 (在IE中,它是innerText而不是textContent。)