Как заставить другие вкладки щелкать элемент, когда я нажимаю кнопку на активированной вкладке?
У меня есть много открытых страниц с одним и тем же доменом и одинаковым содержимым, и мне нужно, чтобы, когда я нажимал на определенную кнопку на одной вкладке, другие вкладки реагировали и нажимали также на ту же кнопку, поэтому я бы сэкономил столько времени. Я где-то читал здесь, что эта функция называется "Интерком".
1 ответ
Извините за задержку с ответом, но я хотел написать хороший способ, а не просто быстрый ответ за баллы. Это работает, только если все страницы находятся в одном домене. LocalStorage работает таким образом. Дайте мне знать, если это работает для вас, и, возможно, придется немного подправить, но это должно дать вам идею для работы. Может быть, есть и лучший способ, но сначала я бы так и поступил.
Это будет идти на каждой странице. Затем вы можете использовать URL-адреса страниц или что-то вроде скрытого поля, чтобы сделать каждую страницу уникальной и доступной для отслеживания, когда вы в данный момент находитесь на ней. Но общая идея должна работать.
Удачного кодирования! Надеюсь, это поможет вам!
Это работает, потому что этот скрипт запускается на каждой странице. Единственная причина, по которой он знает, на какой странице он находится, заключается в том, что значение скрытого поля говорит о текущей странице, когда скрипт выполняется.
Это очень общий пример. Но должен дать вам концепцию. Поскольку этот скрипт выполняется на каждой странице и написан в общем виде, он работает. ПРОСТО УБЕДИТЕСЬ, ЧТО ИМЯ КНОПКИ ДЛЯ ТРИГГЕРНОГО СОБЫТИЯ - ЭТО ЖЕ ИМЯ НА КАЖДОЙ СТРАНИЦЕ!
PS Вы также можете использовать window.location, чтобы узнать, на какой странице вы находитесь, вместо скрытого поля.
**** ПРИМЕР HTML каждой страницы *****
<!-- Each Page -->
<!-- Page 1-->
<div>
<input type="hidden" value="page1"/>
<input type="button" id="cmdButtonThatTriggersEvent" value="Test Buttom"/>
</div>
<!-- Page 2-->
<div>
<input type="hidden" value="page2"/>
<input type="button" id="cmdButtonThatTriggersEvent" value="Test Buttom"/>
</div>
<!-- Page 3-->
<div>
<input type="hidden" value="page3"/>
<input type="button" id="yourButton" value="Test Buttom"/>
</div>
//Make sure ever button name or id is the same on each page.
//That way it is generic. You will also have to track what page //triggered the click event. So make a localstorage hold if the action was clicked to occur, and a localstorage key that holds an array fo all the pages you want this done on. So that way the code can be on every page, and you mark the page off if all page entries were affected, then reset the switch back to null.
****Javascript example for each page*****
<script>
var globalAllPages = ["Page1, "Page3", "Page3"]; //etc.
$(document).on("click", "#yourButton", function(){
localStorage.setItem("trigger_state", "true");
HandleLocalStorageSwitch();
});
$(document).ready(function(){
setInterval(function(){
HandleLocalStorageSwitch();
}, 500);
});
function HandleLocalStorageSwitch()
{
var trigger = localStorage.getItem("trigger_state");
var location = localStorage.getItem("location");
if(trigger != undefined && trigger == "true"){
//now see if this page has ran yet
var dictPages = JSON.parse(localStorage.getItem("current_pages")); //gets the array
var exists = false;
for(var x=0;x<dictPages;x++){
if(dictPages[x]=="this_page"){
exists=true;
break;
}
}
//if it wasnt found then insert it
if(!exists){
dictPages.add("this_page");
$("#this_page_Button").click(); //now trigger this button
}
if(dictPages.length == globalAllPages.length){
//we hit all pages
//then all have been ran, and remove the switch and clear dict
localStorage.setItem("shouldTriggerEvent", "false");
//so now reset and won't run untill one of buttons clicked, then starts process again
localStorage.removeItemKey("current_pages");
}
}
}
}