2010-07-08 62 views
12

我正在使用Mozilla Firefox,并试图找出一种方法来访问使用JavaScript和DOM的同一窗口中的其他选项卡的内容(如果存在其他技术,我可以使用它) 。访问浏览器中其他选项卡的内容

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

回答

10

你可以使用HTML5 cross-window messaging ...但这是有点尖端。

即使在这种情况下,您可能需要使用javascript劫持标记'click'事件,并自己打开窗口,以便您可以访问新窗口对象以发布消息。

+2

看起来我们在过去的六年里向前迈进了很多步骤:) http://caniuse.com/#feat=x-doc-messaging – Loupax 2016-12-06 11:01:15

13

虽然你可以很容易地使用javascript打开一个新窗口,但我相信这是远远不够的。从安全角度来看,您不希望一个选项卡中的Javascript能够在另一个选项卡中查询/访问DOM。如果两个网站都在单独的选项卡中打开,则任何网站都可以访问您的银行帐户详细信息等。

+6

是的。我知道。但是,正如我前面提到的那样,新标签页/窗口将属于同一个域,所以我不可能从我自己的网站上“窃取”银行帐户详细信息。无论如何感谢您的及时回复球员......但需要找到一个解决方法。 - 再次感谢 – vamyip 2010-07-09 04:50:07

+0

您可以通过跟踪服务器端打开的标签来创建类似的效果吗?例如。假设你有意编写了某个链接在新标签中打开,那么你知道用户有两个标签打开。此外,如果客户端js(ajax)从两个选项卡每隔几秒“检入”一次,则可以通过服务器中继标签间通信。例如。也许选项卡1正在编辑“Zoo”对象,并将其名称从“Boston”更改为“Denver”。表2是“波士顿动物园动物”,您可以在动物园更换动物。选项卡2更新为带有ajax更新的“丹佛动物园动物”。 – 2017-07-15 00:44:44

7

如果用JavaScript打开并且页面确实在同一个域中,则可以访问新窗口/选项卡。

您可以打开,像这样

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

窗口/选项卡,然后你就必须等待网页加载,然后才能访问例如标题。

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

只要确保两个页面具有相同的原点,或者会出现以下错误:'阻止了源于原始地址“http:// y”的帧的http:// x“。协议,域和端口必须匹配 – supercoco 2014-06-05 15:47:09

8

Vamyip,

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

它为我工作。

相关问题