最近接到一个功能拓展需求,新需求中所引用的数据接口却只能提供XML格式……无奈自身功力有限,没有想到JS方面理想的解决方案,只好寻求AS工程师的帮忙,经过近2天的联调,最终解决了各浏览下的跨域访问。
下面记录demo版代码:
父页面HTML:

复制代码代码如下:
<iframe id="hiddenIframe" style="width:0px; height:0px0; border:0px none; *width:1px; *height:0px; overflow:hidden;"></iframe>
<button value="获取数据" onclick="getData()"></button>
<!-- 为什么没有直接display:none;或者visibility: hidden;? 【稍后解释:标记】-->

父页面JS:

复制代码代码如下:
document.domain = "xxx.com";
function getData(data) {
if (data == "" || data == undefined || data == null) {
sendData("a=1&b=2"); //参数格式任意,相当于你get请求时发的参数
}
else {
alert("获取的数据:" + data)
} }
function sendData(param) {
var childWindow = document.getElementById('testIframe').contentWindow;
childWindow.sendData(param); //驱动作用,驱动隐藏域内的方法去调用AS中获取XML的API方法
}
function change() {
document.getElementById("testIframe").src = "xx.html"; //隐藏域URL
}

子页面JS:

复制代码代码如下:
document.domain = "xxx.com";
function sendData(paramFromParent) {
var severUrl = 'xxx.com';
//此处对paramFromParent进行处理 获得完整的方位xxx.xml的URL
//然后调用AS的URLLoader方法去获取URL下的数据
//获取成功后调用下面的方法驱动父页面中的getData方法
}
function getData(backData) {
window.parent.getData(backData);
}

标记:没有用display或者visibility是因为:在IE浏览器下,当你的iframe元素设置样式为此两点时候,框架内的JS不进行加载,也就无法进行通信了......
方便理解,上图说话
JS跨域取XML--借助AS的URLLoader
程序流程:
1.加载JS,声明父页面window下的sendData和getData方法
2.加载iframe
3.iframe中运行其中的AS代码
4.AS跨域获取xml文件解析处理
5.调用window.parent.getData以驱动父页面JS,传递数据解析处理好的数据
标签:
JS跨域取XML,URLLoader

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
狼山资源网 Copyright www.pvsay.com

评论“JS跨域取XML--借助AS的URLLoader”

暂无“JS跨域取XML--借助AS的URLLoader”评论...

RTX 5090要首发 性能要翻倍!三星展示GDDR7显存

三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。

首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。

据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。