第一步,设置需要被跨域调用的页面kuayu.htm,具体内容如下:
<!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> | |
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> | |
<title></title> | |
<script type="text/javascript"> | |
window.name = "这里存放要被获取的跨域数据!"; | |
</script> | |
</head> | |
<body> | |
</body> | |
</html>
第二部在调用方加入如入js文件
|
/**
* 跨域请求数据,使用iframe.contentWindow.name属性,
* 本域名下还需要提供一个空白页面地址.
*
* 该方法获取数据是安全的,一旦从iframe.contentWindow.name获得数据,
* 就立马删除iframe,防止数据泄露.
*
* 理论上讲iframe.contentWindow.name可以存储任意字节的数据.
*/
function requestForCrossDomain(oParam) {
var oFrame = document.createElement("iframe");
oFrame.style.width = "0px";
oFrame.style.height = "0px";
oFrame.style.border = "none";
oFrame.style.overflow = "hidden";
var isValid = 0;
var handler = function() {
if (!isValid) {
isValid = 1;
// 注意:这里使用location.href,不是this.src
this.contentWindow.location.href = oParam.blankPage;
}
else {
var rs = this.contentWindow.name;
this.onload = null;
this.onreadystatechange = null;
this.parentNode.removeChild(this);
oParam.callback(rs);
}
};
oFrame.onload = handler;
oFrame.onreadystatechange = function() {
if (this.readyState === "complete") {
handler.call(this);
}
};
oFrame.src = oParam.url;
document.body.appendChild(oFrame);
};
第三步,在根目录中加入一个blank.htm页面,供跨域代码初始化时调用(只做为一个过度)
第四步,在具体的页面中去调用如下的js代码, 即可获取跨域数据
<script language="javascript">
requestForCrossDomain({
url: "http://xxx.xxx.xxx/kuayu.htm?_=" + (new Date()).getTime(),
blankPage: "blank.htm",
callback: function(rs) {
if (!rs) return;
alert(rs);
});
</script>