最近做了一個表單廣告,需要從接口讀取數據,做完發現谷歌火狐下正常,360兼容和IE瀏覽器無法獲取數據,以下是鮮明的對比:

調試發現報錯了:


然后開發把接口改成支持windowname,一開始有點懵,什么是windowname?還好,開發還發了使用例子給我,看了是利用了iframe去加載數據,還是有些地方看不懂,於是問度娘,看完這個就略懂了:http://www.cnblogs.com/zichi/p/4620656.html,禁不住感嘆原來還有這種方式。
下面貼出我的代碼:
function domainData(url, fn)
{
var isFirst = true;
var iframe = document.createElement('iframe');
iframe.style.display = 'none';
var loadfn = function(){
if(isFirst){
iframe.contentWindow.location = 'proxy.html'; //該html文件要與調用該方法的頁面在同一域名,目錄下,不然還是失敗
isFirst = false;
} else {
var data = eval('(' + iframe.contentWindow.name + ')');
fn(data);
iframe.contentWindow.document.write('');
iframe.contentWindow.close();
document.body.removeChild(iframe);
iframe.src = '';
iframe = null;
}
};
iframe.src = url;
if(iframe.attachEvent){
iframe.attachEvent('onload', loadfn);
} else {
iframe.onload = loadfn;
}
document.body.appendChild(iframe);
}
//調用
domainData("http://play9.pcbaby.com.cn/baby170217/action/getProductType.jsp?windowname=1", function(data){
if(data.code == 1){
console.log(data);
}
});
