跨浏览器选项卡调用JavaScript函数

时间:2010-04-10 18:52:47

标签: javascript

我有两个浏览器标签,tab1和tab2。

我在tab1中有一个名为execute的函数,我想从tab2中的页面调用它。

这是可能的,如果是这样的话?

4 个答案:

答案 0 :(得分:18)

JavaScript 无法 在浏览器中执行交叉表脚本编写(存在安全风险)。

然而 第二个标签是从window.open()来电打开的,并设置了浏览器设置,以便在新标签中打开新的弹出窗口相反 - 然后 ,“tab1”可以与“tab2”对话

第一个选项卡/窗口称为opener,因此新选项卡可以使用以下格式调用开启器上的函数:

opener.doSomething();

同样,开启者可以通过使用创建弹出窗口时创建的变量来调用新选项卡/弹出窗口上的函数。

var myPopup = window.open(url, name, features);
myPopup.doStuffOnPopup();

答案 1 :(得分:0)

你应该首先显示你的html,但我认为你的标签有一个链接,你可以这样做:

<a href="some-path" id="tab2">Tab 2</a>

<强> JQuery的:

$('#tab2').click(function(){
   // your function code here

  // prevent default action
  return false;
})

答案 2 :(得分:0)

我真的无法理解你的意思。

但是你可以将javascript函数引用作为参数传递给其他函数。(警惕对象执行上下文)。

因此,在初始化“tab2”时,您可以将“tab1”的执行的函数引用发送到“tab2”。

如果您的问题更清楚,可以用一个例子给出更明确的答案。

答案 3 :(得分:0)

有一个微型开源组件,可以在多个标签中同步/锁定/调用代码,使您可以在标签之间发送消息(免责声明:我是其中的一员!)

https://github.com/jitbit/TabUtils

可以这样称呼:

TabUtils.BroadcastMessageToAllTabs("messageName", data);

然后在另一个标签中:

TabUtils.OnBroadcastMessage("messageName", function (data) {
    //do something
});

它基于onstorage事件,您可以简单地根据需要修改代码,这非常简单。