Как объединить эти скрипты?

129
23 октября 2019, 13:40

var dialog = document.querySelector('dialog'); 
document.querySelector('#show').onclick = function() { 
  dialog.show(); 
}; 
document.querySelector('#close').onclick = function() { 
  dialog.close(); 
}; 
 document.getElementById("show").onclick = function() 
    { 
      var myaudio = document.getElementById("myaudio"); 
      if(myaudio.paused == true) 
      { 
        document.getElementById("myaudio").play(); 
        this.style.backgroundColor = "Blue"; 
        this.style.color = "White"; 
      } 
      else if (myaudio.paused == false) 
      { 
        document.getElementById("myaudio").pause(); 
        this.style.backgroundColor = "White"; 
        this.style.color = "Black"; 
      } 
    } 
   
<dialog> 
  <p>Это всплывающее окно, которое сделано на html5 и javascript</p> 
  <button id="close">Закрыть</button> 
</dialog> 
<button id="show" type="button">Открыть всплывающее окно!</button> 
<audio id="myaudio" src="мелодия.mp3"> 
</audio>

Помогите объединить всплывающее окно и звук при нажатии на кнопку. Без звука в хроме работает окно, но со звуком окно не разворачивается, включается музыка. В edge и firefox окно вообще не работает, но мелодия проигрывается. Как то можно их оптимизировать для этих браузеров? firefox скрывает содержимое, а edge просто вываливает... Вообще как я понял если запустить второй скрипт из первого, должно сработать? Но, как оформить и оптимизировать под все браузеры? Желательно не используя переменную, т.е. с привязкой по ид.

Answer 1

Для использования нескольких обработчиков на одном элементе лучше воспользоваться методом .addEventListener

document.querySelector('#show').addEventListener('click', function() {
  dialog.show();
});
document.getElementById("show").addEventListener('click', function() {...});

Сейчас при добавлении обработчика с музыкой - старый обработчик стирается.

READ ALSO
Пользовательский менеджер событий

Пользовательский менеджер событий

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

110
Как ускорить парсинг страницы phantom?

Как ускорить парсинг страницы phantom?

Есть функция, выполнение ее занимает примерно 5 секундЭта функция получает ссылку на страницу, далее выполняются встроенные методы phantom

108
Почему не наследуется конструктор?

Почему не наследуется конструктор?

Есть 2 функции конструкторов, прототип 1-ой функции-конструктора наследуется через Objectcreate, но в качестве прототипа ошибочно указан не объект(прототип),...

129