включить или отключить кнопку на другой странице

#javascript #html

Вопрос:

Как я смогу нажать кнопку на одной странице, чтобы включить другую кнопку на другой странице?

мой javascript

 function enableButton2() {
    document.getElementById("button2").disabled = false;
    document.getElementById("divbutton").hidden = false;
  }
 

HTML

 <input type="button" id="button1" value="button 1" onclick="enableButton2()"/>

<div id="divbutton" hidden>
  <input onclick="window.location.href='menu.html'" type="button" id="button2" value="button 2" disabled />
</div>
 

этот код работает, но будет работать только в том случае, если обе эти кнопки находятся на одной странице, я пытаюсь разделить их на отдельные страницы, но все равно работать по назначению, то есть при нажатии на первую кнопку появится вторая кнопка.

Заранее спасибо!

Ответ №1:

localStorage это был бы эффективный подход, если вы также хотите сохранить выбор кнопки пользователя. localStorage позволяет хранить значение в том же источнике, что означает, что вам просто нужно проверить, было ли изменено значение, и определить, какая кнопка должна быть включена.

Например,

 function enableButton2() {
    localStorage.enabledButton = '2'
}
 

Затем, чтобы проверить, какую кнопку включить, которая будет использоваться на второй странице

 setInterval(() => {
    if (localStorage.enabledButton == "1") {
        //Enable button 1
    }
    if (localStorage.enabledButton == "2") {
        //Enable button 2
    }
})
 

Ответ №2:

Вы можете использовать API широковещательного канала для связи между различными вкладками.

Например, объявите следующее на обеих страницах:

 const bc = new BroadcastChannel('button_disable');
bc.onmessage = function(event){
    if(event.data == "hide"){
        //hide the buttons
    }else if(event.data == "show){
        //show the buttons
    }
}
 

Затем, если вы хотите скрыть/показать кнопку, просто отправьте сообщение:

 bc.postMessage('hide');
 

Комментарии:

1. Я хотел бы добавить. если у вас есть глобальный файл scrip, например «Utility.js» который вы включаете каждый раз, когда он также может быть там. вам не пришлось бы дублировать код.