我有两个浏览器标签,tab1和tab2。
我在tab1中有一个名为execute的函数,我想从tab2中的页面调用它。
这是可能的,如果是这样的话?
答案 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
事件,您可以简单地根据需要修改代码,这非常简单。