文章分类 Classification
利用window.name跨域请求
稿件来源: 阳光企业网站管理系统 撰稿作者: 太阳光 发表日期: 2016-01-31 阅读次数: 201 查看权限: 游客查看
利用window.name跨域请求
var url = "http://www.xxx.com/post.php";//在这个文件里返回<script>window.name='{需要的json字符串}'<\/script> postJSONP(url, {name:"xzys",pass:"123456"}, function(obj){ console.log(obj); }); function postJSONP(url, data, fn) { var _doc = document,form = _doc.createElement("form"), iframeState,key,input,iframe,iframeName = "ifr" + Math.random().toString(16).slice(-6); //创建表单数据 if (!!data) { for(key in data) { input = _doc.createElement("input"); input.type = "hidden"; input.name = key; input.value = data[key]; form.appendChild(input); } } form.action = url; form.target = iframeName; form.method = "post"; _doc.body.appendChild(form); try { iframe = _doc.createElement('<iframe name="'+iframeName+'">');//兼容IE6、7 } catch (e) { iframe = _doc.createElement('iframe'); iframe.name = iframeName; } iframe.style.display = "none"; iframe.attachEvent ? iframe.attachEvent("onload", fulfil) :(iframe.onload = fulfil);//事件处理 _doc.body.appendChild(iframe); form.submit();//表单提交 iframeState = 0;//框架状态记录 function fulfil(){ if(iframeState === 0){ iframeState = 1; iframe.removeAttribute('name');//解决IE10+获取不到window.name的问题 iframe.contentWindow.location.replace("about:blank"); }else if(iframeState === 1){ iframeState = null; var json,arr,str = iframe.contentWindow.name; console.info(str); try{ json = window.JSON ? JSON.parse(str) : new Function("return " + str)(); }catch(e){ json = {error:1}; } iframe.contentWindow.document.write(''); iframe.contentWindow.close(); _doc.body.removeChild(iframe); _doc.body.removeChild(form); //执行回调方法 if(typeof fn === "function"){ fn(json); }else if(arr = url.match(/[&?]callback=([^&#]+)/)){ typeof window[arr[1]] === 'function' && fn(json); } } } }
关键词: 跨域请求,window.name,跨域 编辑时间: 2016-01-31 11:24:16
0
高兴0
支持0
搞笑0
不解0
谎言0
枪稿0
震惊0
无奈0
无聊0
反对0
愤怒
0%(0)
0%(0)
- 中搜索:利用window.name跨域请求
- 中搜索:利用window.name跨域请求
- 暂无评论
文章图片 article Pictrue
网友评论