【JS跨域取XML】之——借助AS的URLLoader
最近接到一个功能拓展需求,新需求中所引用的数据接口却只能提供XML格式……无奈自身功力有限,没有想到JS方面理想的解决方案,只好寻求AS工程师的帮忙,经过近2天的联调,最终解决了各浏览下的跨域访问。
下面记录demo版代码:
父页面HTML:
<iframeid="hiddenIframe"style="width:0px; height:0px; border:0px none; *width:1px; *height:0px; overflow:hidden;"></iframe> <buttonvalue="获取数据"onclick="getData()"></button> <!--为什么没有直接display:none;或者visibility: hidden;? 【稍后解释:标记】-->
父页面JS:
document.domain = "xxx.com";functiongetData(data) {if (data == "" || data == undefined || data == null) {sendData("a=1&b=2"); //参数格式任意,相当于你get请求时发的参数 }else{alert("获取的数据:" +data)} }functionsendData(param) {var childWindow = document.getElementById('testIframe').contentWindow;childWindow.sendData(param);//驱动作用,驱动隐藏域内的方法去调用AS中获取XML的API方法 }functionchange() {document.getElementById("testIframe").src = "xx.html"; //隐藏域URL }
子页面JS:
document.domain = "xxx.com";functionsendData(paramFromParent) {var severUrl = 'xxx.com';//此处对paramFromParent进行处理 获得完整的方位xxx.xml的URL//然后调用AS的URLLoader方法去获取URL下的数据//获取成功后调用下面的方法驱动父页面中的getData方法 }functiongetData(backData) {window.parent.getData(backData); }
标记:没有用display或者visibility是因为:在IE浏览器下,当你的iframe元素设置样式为此两点时候,框架内的JS不进行加载,也就无法进行通信了......
方便理解,上图说话
程序流程:
- 加载JS,声明父页面window下的sendData和getData方法
- 加载iframe
- iframe中运行其中的AS代码
- AS跨域获取xml文件解析处理
- 调用window.parent.getData以驱动父页面JS,传递数据解析处理好的数据
OK,成功跨域...下班...~
转载于:https://www.cnblogs.com/ccto/archive/2013/03/21/2974022.html
【JS跨域取XML】之——借助AS的URLLoader相关推荐
- js跨域请求方式 ---- JSONP原理解析
这篇文章主要介绍了js跨域请求的5中解决方式的相关资料,需要的朋友可以参考下 跨域请求数据解决方案主要有如下解决方法: 1 2 3 4 5 JSONP方式 表单POST方式 服务器代理 Html5的X ...
- 5种处理js跨域问题方法汇总(转载)
1.JSONP跨域GET请求 ajax请求,dataType为jsonp.这种形式需要请求在服务端调整为返回callback([json-object])的形式.如果服务端返回的是普通json对象.那 ...
- 转载:flash 跨域 crossdomain.xml
转载自http://hi.baidu.com/bozz_/item/e8b1c7c4ca31317489ad9e91 flash 跨域 crossdomain.xml 一.概述 位于www.cross ...
- JS跨域请求解决方案-CORS
文章目录 JS跨域请求解决方案-CORS 1.JS跨域请求 测试JavaScript的跨域请求(失败) 2. 跨域解决方案CORS 普通实现方法 springMVC的跨域请求注解 3.分布式Id解决方 ...
- 常见js跨域解决方案
以下为几种常见js跨域解决方案: ajax跨域请求 一.使用jsonp方式实现跨域请求 $.ajax({async: false, type:"POST",dataType: 'j ...
- chrome浏览器的跨域设置 Google Chrome浏览器下开启禁用缓存和js跨域限制--disable-web-security...
chrome用户默认路径 Win7:C:\Users\[用户名]\AppData\Local\Google\Chrome\User Data\ XP:C:\Documents and Settings ...
- Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1.设置 document.domain为一致 推荐1 2.Apache 反向代理 推荐1 3. ...
- window.opener方法的使用 js跨域
2019独角兽企业重金招聘Python工程师标准>>> 最近公司网站登陆加入了第三方登陆.可以用QQ直接登陆到我们网站,在login页面A中点QQ登陆时,调用了一个window.op ...
- js跨域访问,No 'Access-Control-Allow-Origin' header is present on the requested resource
js跨域访问提示错误:XMLHttpRequest cannot load http://...... No 'Access-Control-Allow-Origin' header is prese ...
- 解决js跨域调用WebApi的问题
解决js跨域调用WebApi的问题 参考文章: (1)解决js跨域调用WebApi的问题 (2)https://www.cnblogs.com/qubernet/p/6396295.html 备忘一下 ...
最新文章
- [SHOI2007]园丁的烦恼
- 吃自助餐怎么样一个顺序吃法才合算?
- linux中断函数中有锁,Linux下fcntl实现建议锁和强制锁
- html 超链接打开Excel,计算机打开Excel超链接时提示的解决方案
- Nginx负载均衡实现之用户手动选择与DNS轮询
- 元素加了position:absolute则该元素的text-align:center居中失效的解决办法
- Taglist:Exuberant ctags.......
- 详细叙述ajax的详情,ajax的配置详情、ajax的调用解释、ajax的中文乱码和ajax的表单提交(内有实例)...
- 容器已成运维必备能力,你知道它是如何出现的吗?
- @[TOC](0x01131A81 处(位于 Project2.exe 中)引发的异常: 0xC0000005: 读取位置 0x00320000 时发生访问冲突。
- WIN10合并磁盘扩展区是灰色的
- 谷歌浏览器打开普通用户_谷歌浏览器为啥打开之后会是其他的浏览器的解决步骤...
- 如何在知网下载硕士、博士论文PDF?
- 合成大西瓜(西瓜雨版)及改版思路(保姆式教程)
- 简述:静态工作点(Q点),直流负载线,交流负载线
- 知无不言 容芳志:Objective-C地位下滑是必然
- 思维题:12个硬币中有1个假币,假币的重量与真币不同,如何用天平最多称量3次找出假币?
- 朱清时的10本推荐书
- Win10系统ie浏览器打不开网页的2种解决方法
- SIMCOM A7670 模组(4G Cat.1 通信模组)AT指令测试 TCP/UDP 通信过程