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

谁能告诉我为什么最后一个警报没有触发?

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

4

2 回答 2

2

如果 iframe 指向不同站点上的页面,那么这就是生效的“同源策略”:

同源策略的本质可以表述为:只有当它们来自相同的协议://域:端口,或者简而言之,来自相同的来源时,窗口才能在彼此的上下文中工作。

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

于 2013-07-02T21:33:09.817 回答
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);
于 2013-07-02T21:38:25.193 回答