【问题标题】:Accessing the content of other tabs in a browser在浏览器中访问其他选项卡的内容
【发布时间】:2011-03-13 07:46:51
【问题描述】:

我正在使用 Mozilla Firefox,我正在尝试找出一种方法来使用 JavaScript 和 DOM 访问同一窗口中其他选项卡的内容(如果存在其他技术,我愿意接受)。

例如,我想在 tab1 中运行 JavaScript 代码,它可以找到其他选项卡的标题。基本上我需要这个,以便我可以在不使用window.open 方法的情况下识别在当前页面中由于href 而打开的选项卡。我想要的只是一个简单的超链接,它打开一个与当前页面属于同一域的页面(该页面应该在新选项卡中打开)。现在我希望能够从当前选项卡访问这个新选项卡。

【问题讨论】:

  • 也许看看 WebStorage 和 IndexedDB。

标签: javascript firefox dom tabs


【解决方案1】:

虽然您可以使用 JavaScript 轻松打开一个新窗口,但我敢肯定它已经做到了。从安全的角度来看,您不希望一个选项卡中的 JavaScript 能够查询/访问另一个选项卡中的 DOM。如果两个网站都在不同的选项卡中打开,那么任何网站都可以访问您的银行帐户详细信息等。

【讨论】:

  • 是的..我知道。但是,正如我之前提到的,新的选项卡/窗口将属于同一个域,所以我不可能从我自己的网站“窃取”银行账户详细信息。无论如何,感谢您的及时回复……但需要为此找到解决方法。 - 再次感谢
  • 您可以通过跟踪服务器端打开的标签页来创建类似的效果吗?例如。假设您有意对某些链接进行编码以在新选项卡中打开,那么您知道用户打开了两个选项卡。此外,如果您有客户端 js (ajax) 从两个选项卡每隔几秒钟“签入”一次,则可以通过服务器中继选项卡间通信。例如。也许选项卡 1 正在编辑“动物园”对象并将其名称从“波士顿”更改为“丹佛”。选项卡 2 是“波士顿动物园动物”,您可以在其中更改动物园中的动物。选项卡 2 通过 ajax 更新更新为“Denver Zoo Animals”。
【解决方案2】:

如果新窗口/标签是用 JavaScript 打开的,并且页面确实在同一个域中,您可以访问它。

你可以像这样打开窗口/标签

var win = window.open("/path_to_page");

然后您必须等待页面加载才能访问,例如标题。

win.onload = function(){ alert(win.document.title); };

【讨论】:

  • 只要确保两个页面具有相同的来源,否则您将收到以下错误:Blocked a frame with origin "http://x" from accessing a frame with origin "http://y". Protocols, domains, and ports must match.
【解决方案3】:

您可以使用HTML5 cross-window messaging (archive.org link...但这是一种前沿。

即使在这种情况下,您也可能需要使用 JavaScript 劫持 标签的“点击”事件并自己打开窗口,这样您就可以访问新的窗口对象来发布消息。

【讨论】:

【解决方案4】:

尝试设置一个可访问同一域中任何页面的 cookie。在其他页面上,使用 JavaScript 计时器检查 cookie 值是否已更改,当它发生更改时,您可以使用其值并采取行动。

它对我有用。

【讨论】:

  • 或者你可以使用localStorage;但 cookie 更适用于旧版浏览器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 2011-07-05
相关资源
最近更新 更多