您的位置:首页 > 其它

跨域加载脚本或页面获取内容

2015-09-16 20:43 393 查看
$.extend({
    /**
    * 跨域装载JS脚本,获取页面窗口对象,从而获得DOM内容
    * @param string url 需要读取的脚本地址
    * @param function callback 回调函数,参数为载入后的窗口win对象
    * @param string charset 指定字符编码
    */
    'crossGetScript':function(url,callback,charset){
        
        if($.isEmptyObject(url) || !$.isFunction(callback)){
            return;
        }
        
        //初始化返回
        if(charset===undefined){
            charset = 'UTF-8';
        }
        
        var id = 'i_'+new Date().getTime();
        
        //装载url数据
        $('<iframe>',{
            'id':id,
            'srcdoc':'<script src="'+url+'" charset="'+charset+'" ></script>',
            'style':'display:none',
            'load':function(){
                var win = $(this)[0].contentWindow;
                callback(win);
            }
        }).appendTo('body');
        
        //去除IFRAME
        window.setTimeout("$('#"+id+"').remove();",1000);
    },
    /**
     * 跨域装载页面,获取页面的win窗口对象
     * @param string url
     * @param function callback
     * @param string charset
     */
    'crossGetHtml':function(url,callback,charset){
        if($.isEmptyObject(url) || !$.isFunction(callback)){
            return;
        }
        
        //初始化返回
        if(charset===undefined){
            charset = 'UTF-8';
        }
        
        var id = 'i_'+new Date().getTime();
        
        //装载url数据
        $('<iframe>',{
            'id':id,
            'src':url,
            'style':'display:none',
            'load':function(){
                var win = $(this)[0].contentWindow;
                callback(win);
            }
        }).appendTo('body');
        
        //去除IFRAME
        window.setTimeout("$('#"+id+"').remove();",1000);
        
    }
});

基本思路就是用iframe装载你需要的页面,然后从页面获取你所需要的任何数据,包括页面或者DOM对象。甚至可以用crossGetScript函数跨域动态加载JS脚本。再在回调函数里面通过操作iframe的window对象,可以获取加载脚本的函数或者变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: