Могу ли я дважды использовать window.onbeforeunload в своем html-документе?

Я создаю макет HTML, в котором пользователь может заполнить данные и сохранить эту страницу в форматах HTML и JSON, используя «сохранить» и «сохранить как черновик» соответственно. Могу ли я использовать

window.onbeforeunload

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

Предупреждения будут показывать:

  • когда страница пуста и пользователь пытается загрузить другую страницу
  • когда пользователь заполняет данные в макете и пытается покинуть макет без сохранения

person mdp    schedule 15.06.2012    source источник
comment
Я не уверен, что вы имеете в виду, используя его дважды: onbeforeunload должна быть функцией, так почему бы просто не использовать условный оператор в функции, чтобы определить, какое сообщение показывать?   -  person phenomnomnominal    schedule 16.06.2012
comment
Ознакомьтесь с этим ответом для получения более общей информации о привязке событий javascript и различных методах, используемых для этого: false/6902073#6902073" title="element onload vs element addeventlistenerload callbak false"> stackoverflow.com/questions/6902033/   -  person Chris Baker    schedule 16.06.2012


Ответы (2)


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

window.onbeforeunload=function()
{ 
    if(form_empty())
        return "Form is empty"; // message for empty form 
    else
        return "Form is not empty"; // message for filled up form 
}

function form_empty()
{
    // check form fields whether the form is empty or not
    // return true if form is empty
    // return false if form is not empty
}
person The Alpha    schedule 15.06.2012

Как и любой другой обработчик событий, назначенный таким образом, если вы установите его снова, он уничтожит любой обработчик, который уже был там.

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

person Niet the Dark Absol    schedule 15.06.2012