以下是代码片段:

var iframe1 = document.createElement(\"大众iframe\公众);

iframe1.src = \公众http://127.0.0.1/server.html\公众;

jspiframe404跨域要求的iframe解决计划 AJAX

(function() {

// 当iframe加载完之后触发的函数

function iframe1_load() {

}

// 在IE下要用attachEvent来添加iframe的onload事宜

if(iframe1.attachEvent) {

iframe1.attachEvent(\公众onload\"大众, function(){

iframe1_load();

});

}

else {

iframe1.onload = iframe1_load;

}

})();

document.body.appendChild(iframe1);

把稳这里的iframe1_load函数,它在iframe1完备加载完之后被浏览器调用,我们在这里取回从做事器返回的数据。
上面说过,从做事器返回的数据该当是保存在window.name里的,改写一下iframe1_load:

以下是代码片段:

function iframe1_load() {

alert(iframe1.contentWindow.name);

}

但由于同源策略的缘故原由,上面的语句会报错,由于iframe1访问的页面在http://127.0.0.1/这个域,而这上面的JavaScript所在的页面是在http://localhost/,以是client.html暂时还不能访问iframe1的大部分属性。
这个时候聪明的同学就能想到,如果把iframe1导航到http://localhost/下面的页面不就可以访问window.name了吗?而且上面也说过window.name在换了页面之后,还是存在的。

根据上面的剖析,在http://localhost/下建一个新的页面empty.html(不用往里添加代码,只要担保不404就好。
),在iframe1_load函数中先把iframe1导航到http://localhost/empty.html,然后再从iframe1的window.name里取数据。
把稳,iframe1导航到新页面之后浏览器会再次调用iframe1_load,从而造成去世循环,以是还要加个标记。

以下是代码片段:

var iframe1 = document.createElement(\"大众iframe\"大众);

iframe1.style.display = \"大众none\公众;

document.body.appendChild(iframe1);

(function () {

var same_domain = false;

// 当iframe加载完之后触发的函数

function iframe1_load() {

if (same_domain) {

// 取得从做事器返回的数据

alert(iframe1.contentWindow.name);

// 关闭iframe1的窗口

iframe1.contentWindow.close();

// 移除iframe1

document.body.removeChild(iframe1);

} else {

same_domain = true;

// 不能用iframe1.src = \公众empty.html\公众,在IE下有缺点

iframe1.contentWindow.location = \"大众empty.html\"大众;

}

}

// 在IE下要用attachEvent来添加iframe的onload处理函数

if (iframe1.attachEvent) {

iframe1.attachEvent(\"大众onload\"大众, function () {

iframe1_load();

});

}

else {

iframe1.onload = iframe1_load;

}

})();

iframe1.src =

http://127.0.0.1/server.html

;

server.html的代码

以下是代码片段:

<!DOCTYPE html PUBLIC \"大众-//W3C//DTD XHTML 1.0 Transitional//EN\公众 \"大众http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\公众>

<html xmlns=\公众http://www.w3.org/1999/xhtml\"大众>

<head>

<title>Server</title>

<script type=\"大众text/javascript\"大众>

window.name = \公众HELLO WORLD\"大众;

</script>

</head>

<body>

</body>

</html>