Javascript:从iframe内容中读取?

时间:2013-07-02 21:29:10

标签: javascript

function LoadFile() {
  alert("loadfileok");
  var oFrame = document.getElementById("frmFile");
  alert(oFrame);
  var strRawContents = oFrame.contentWindow.document.body.childNodes[0].innerHTML;
  alert(strRawContents);
}

有谁能告诉我为什么最后一次警报没有开火?

其他一切都有效。唯一的问题似乎是最后一行之前的行?

2 个答案:

答案 0 :(得分:2)

如果iframe指向其他网站上的某个网页,那么这就是“同源政策”生效:

同源策略的本质可以表述为:只有来自相同的协议://域:端口,或者很快,来自同一个来源,窗口才可以在彼此的上下文中工作。

这是由浏览器强制执行的,以确保您不会打开指向FaceBook的iframe,然后在不知情的情况下将自己添加为朋友。

答案 1 :(得分:0)

我不认为您访问的对象具有您认为具有的属性。试试这个:

var strRawContents = oFrame.contentWindow.document.body.innerHTML;

您可以通过多种方式调试代码,而不仅仅是使用alert()。例如,尝试按“F12”(如果您使用的是Chrome或IE)来获取开发人员工具。这将极大地帮助您调试代码。

在我们讨论支持的属性时,请在下次要查看对象可用的属性时尝试此操作:

var obj = document.body;
var msg = '';
for( var prop in obj )
    msg += prop + "<br/>";

document.write(msg);