【问题标题】:Find Out Current URL of iFrame找出 iFrame 的当前 URL
【发布时间】:2012-11-26 20:08:19
【问题描述】:

是否有办法找出 iframe 的当前 URL?如果我将警报消息 onload 设置为 document.getElementByTagName("iframe")[0].contentWindow.location.href ,那么每次 iframe 页面更改时,我都会收到当前 url。不幸的是,由于 Javascript 同源政策指南,这在 Chrome 上不起作用。谁能推荐一种替代方法,以便有人在 iframe 中获取页面的当前 URL?

【问题讨论】:

  • 你试过document.getElementsByTagName("iframe")[0].src吗?
  • 我做到了,但不幸的是,这只给了你 iframe 的初始 src。例如,如果我的 src="en.wikipedia.org" 那么即使我导航到另一篇 wiki 文章,该 .src 也只会给我en.wikipedia.org 而不会更改它。
  • 如果 iframe 更改后的 src 属于外部第 3 方域,您将无法访问它。

标签: javascript url iframe


【解决方案1】:

可能有不同的方法可以跳过同源策略:

我建议postMessages https://developer.mozilla.org/en-US/docs/DOM/window.postMessage

应该适用于 Firefox 3.5、Opera 10、Safari 4.0/Chrome 3.0+、Internet Explorer 8.0。然而,您必须同时访问这两个域。

您也可以尝试类似 old school XhrIframeProxy 甚至是 Xdomain requests 但我不确定后者是否有良好的支持

【讨论】:

  • 我尝试过 postMessage,但我相信您必须控制这两个域才能使其正常工作。我有一个包含 iframe 的页面 A。 iframe 总是在 en.wikipedia.org 域中。我尝试将 postMessage 设置为在 onload 期间关闭并在我的主页中列出事件但无济于事:(
  • 是的,没错,您需要访问两者才能将javascript调用到父窗口
  • 有没有可以获取当前URL的方案?
  • 不这么认为,至少没有直截了当的方法,SOP有点强的规则
猜你喜欢
  • 2012-11-12
  • 2010-10-30
  • 2015-12-31
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
相关资源
最近更新 更多