1

如何访问 iframe:

var iframe = document.getElementById('sitefield1');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var elem = innerDoc.getElementsByClassName("myclass")[0];

主页是 test1.ru,iframe 是 test2.ru(都在我的电脑上)。在 .htaccess 是

Header add Access-Control-Allow-Origin "http://test1.ru/2"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
Header add Access-Control-Expose-Headers "X-InlineCount"

是否可以进入 iframe 模块?我是这个网站的所有者(做一些测试),也可以将任何设置添加到我的 Firefox。我还发现此代码在 IE 中不起作用(即使我打开了不同域之间的访问权限并且 XSS 过滤器已关闭)。Chrome 看起来不再支持 --disable-web-security ... Chrome 的错误是 Blocked a frame with origin "test1" from access a frame with origin "test2"。协议、域和端口必须匹配。

任何想法都会非常有助于做到这一点。

4

1 回答 1

3

您不能直接跨源访问帧。在现代浏览器中,您可以使用postMessage

发送数据的帧需要调用postMessage

top.postMessage({ foo: "bar" }, "*");

并且接收数据的帧需要注册一个事件监听器来查找消息并对其做出反应。

window.addEventListener("message", receiveMessage, false);
function receiveMessage(evt) {
    alert(event.data.foo);
}
于 2013-08-21T22:02:28.817 回答