访问iFrame中的变量,或者反之亦然

时间:2009-06-18 19:00:48

标签: html iframe variables air adobe

我有一个带有iFrame的html页面,我想从中读取一些变量。 它基本上是一张地图,我想从中检索纬度和经度值。

我一直在研究Adobe AIR,我尝试从innerHTML,contentWindow中检索值,但仍无法使其正常工作。

有什么好办法可以做到这一点吗?

6 个答案:

答案 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