1

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

我一直在使用 Adob​​e AIR,并且尝试从 innerHTML、contentWindow 中检索值,但仍然无法使其正常工作。

有什么好方法可以完成这项工作吗?

4

6 回答 6

1

浏览器安全模型禁止任何跨域流量/通信。如果我们处理不同的子域,规则可以放宽到顶级域。但最终,你没有追索权。

如果您的应用程序需要跨域边界进行通信,那么通过后端通常是您最好的选择。如果您不控制 iframe 中的内容,您通常会很不走运。仅供参考,谷歌地图确实提供了一个 API 来使用他们的应用程序。http://code.google.com/apis/maps/index.html

于 2009-06-19T17:21:54.943 回答
0

在跨域通信的情况下,非应用程序沙箱桥的应用程序工作。

谢谢各位回复。。

于 2009-06-23T08:17:01.757 回答
0

您必须使用应用程序到非应用程序沙箱桥接。这将允许您在两个区域(iframe 和一般)之间进行通信。看看这里http://www.adobe.com/devnet/air/ajax/quickstart/sandbox_bridge.html

于 2009-06-21T09:44:27.920 回答
0

您可以使用 jQuery 访问 iframe 中的内容。

<iframe id="iframeId" ...> .... <div id='someData'>data</div> ....</iframe>
$('#iframeId').contents().find('#somedata').html(); // returns data
于 2009-06-18T19:23:42.063 回答
0

谢谢各位回复,

@svend:“通过后端”到底是什么?我明白了。我确实控制了 iFrame 中的内容,该 iFrame 位于另一个域中。

@Webber:感谢那个链接韦伯......看起来它会为我工作......我会试试......

于 2009-06-22T04:57:47.610 回答
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
于 2010-02-02T09:11:36.170 回答