Вызовите функцию JavaScript на вкладках браузера - PullRequest
6 голосов
/ 10 апреля 2010

У меня есть две вкладки браузера, tab1 и tab2.

У меня есть функция execute в tab1, которую я хотел бы вызвать со страницы в tab2.

Возможно ли это, и если да, то как?

Ответы [ 4 ]

18 голосов
/ 10 апреля 2010

JavaScript не может выполнять в браузере перекрестные сценарии (это угроза безопасности).

Если, однако, , 2-я вкладка была открыта из вызова window.open(), и настройки браузера были настроены таким образом, что вместо новых всплывающих окон открывались новые вкладки - затем да , «tab1» может общаться с «tab2»

первая вкладка / окно называется opener и, таким образом, новая вкладка может вызывать функции на открывателе, используя этот формат:

opener.doSomething();

аналогично, открывающая программа может вызывать функции на новой вкладке / всплывающем окне, используя переменную, созданную при создании всплывающего окна.

var myPopup = window.open(url, name, features);
myPopup.doStuffOnPopup();
0 голосов
/ 17 января 2019

Существует небольшой компонент с открытым исходным кодом для синхронизации / блокировки / вызова кода на нескольких вкладках, который позволяет отправлять сообщения между вкладками (ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я один из авторов!)

https://github.com/jitbit/TabUtils

Это можно назвать так:

TabUtils.BroadcastMessageToAllTabs("messageName", data);

А потом в другой вкладке:

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

Он основан на событии onstorage, вы можете просто изменить код, который вам нужен, это очень просто.

0 голосов
/ 10 апреля 2010

Я действительно не могу понять, что вы подразумеваете под вопросом.

Но вы можете передавать ссылки на функции javascript в качестве аргументов другим функциям. (Остерегайтесь контекстов выполнения объектов).

Таким образом, при инициализации "tab2" вы можете отправить ссылку на функцию execute из "tab1" на "tab2".

Мог бы дать более конкретный ответ с примером, если бы вы были более ясны в своем вопросе.

0 голосов
/ 10 апреля 2010

Сначала вы должны показать свой HTML, но я полагаю, что на вашей вкладке есть ссылка, вы можете сделать это так:

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

JQuery:

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

  // prevent default action
  return false;
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...