在浏览器中访问其他选项卡的内容

IT技术 javascript firefox dom tabs
2021-01-17 17:49:37

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

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

4个回答

虽然您可以使用 JavaScript 轻松地打开一个新窗口,但我相信这已经足够了。从安全的角度来看,您不希望一个选项卡中的 JavaScript 能够查询/访问另一个选项卡中的 DOM。如果两个站点都在单独的选项卡中打开,则任何站点都可以访问您的银行帐户详细信息等。

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

如果使用 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.
2021-03-26 17:49:37

您可以使用HTML5 跨窗口消息传递(archive.org 链接……但这有点前沿。

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

@Loupax 只要您不支持 IE
2021-04-03 17:49:37
看起来我们在过去六年中取得了很多进步:) caniuse.com/#feat=x-doc-messaging
2021-04-08 17:49:37

尝试设置一个 cookie,该 cookie 可被同一域中的任何页面访问。在其他页面上,使用 JavaScript 计时器检查 cookie 值是否已更改,何时更改,您可以使用其值并执行操作。

它对我有用。

或者你可以使用 localStorage;但 cookie 对旧浏览器的影响更大。
2021-03-21 17:49:37