我有一个带有iFrame的html页面,我想从中读取一些变量。 它基本上是一张地图,我想从中检索纬度和经度值。
我一直在研究Adobe AIR,我尝试从innerHTML,contentWindow中检索值,但仍无法使其正常工作。
有什么好办法可以做到这一点吗?
答案 0 :(得分:1)
浏览器安全模型禁止任何跨域流量/通信。如果我们处理不同的子域,则可以放宽规则到顶级域。但最终,你没有办法。
如果您的应用程序需要跨越域边界,那么通过后端进行通常是您最好的选择。如果您不控制iframe中的内容,那么通常会运气不好。仅供参考,谷歌地图确实提供了使用其应用程序的API。 http://code.google.com/apis/maps/index.html
答案 1 :(得分:0)
您可以使用jQuery访问iframe中的内容。
<iframe id="iframeId" ...> .... <div id='someData'>data</div> ....</iframe>
$('#iframeId').contents().find('#somedata').html(); // returns data
答案 2 :(得分:0)
您必须将该应用程序用于非应用程序沙箱桥。这将允许您在两个区域(iframe和general)之间进行通信。看看http://www.adobe.com/devnet/air/ajax/quickstart/sandbox_bridge.html
答案 3 :(得分:0)
感谢回复人员,
@svend:究竟是什么“通过后端”?我得到了..我确实控制了iFrame中的内容,这是在另一个域上。
@Webber:谢谢你的链接webber ...看起来它会为我解决..我会试试看......
答案 4 :(得分:0)
非应用程序沙箱桥的应用程序在跨域通信的情况下起作用。
感谢回复家伙..
答案 5 :(得分:0)
我必须这样做:
1-在包含iframe的文件中添加隐藏输入,只要用户更改它们,就会保存lng和lat。
2-在js:
上创建此功能function getFrameWindow(frameId) {
var frame = document.getElementById(frameId);
var result = null;
if (frame.contentDocument) {
// For NS6
result = frame.contentDocument.window || frame.contentDocument.defaultView;
} else if (frame.contentWindow) {
// For IE5.5 and IE6
result = frame.contentWindow;
} else if (frame.document) {
// For IE5
result = frame.document.window;
}
return result;
}
3-使用了包含iframe的javascript中的代码:
getFrameWindow("iframe").document.getElementById("lat").value