$.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对象,可以获取加载脚本的函数或者变量。
时间: 2024-11-05 13:39:11