利用window.name+iframe跨域獲取接口數據


        最近做了一個表單廣告,需要從接口讀取數據,做完發現谷歌火狐下正常,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);
        }
    });

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM