zoukankan      html  css  js  c++  java
  • 利用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);
            }
        });
    

      

    欢迎大家来浏览我的博客,如发现我有写错的地方,欢迎交流指正。
  • 相关阅读:
    elment ui 日期限制
    javascript中的编码与解码
    vue3 px 转ref
    css 波浪线
    初始化css
    vue 3 的复制功能 vue-clipboard3
    二维数组转一维数组、对象数组互斥去重
    分享几个数组方法
    前端生成图形验证码
    rem自适应布局,移动版
  • 原文地址:https://www.cnblogs.com/lulu-beibei/p/6708033.html
Copyright © 2011-2022 走看看