Я пытаюсь настроить тег onbeforeunload, чтобы запретить пользователю покидать определенные страницы, если и только если они имеют несохраненный контент и только на определенных страницах (мы используем одну главную страницу). Я быстро обнаружил, что наличие возврата ## any ## в теге onbeforeunload всегда вызывает подтверждение javascript и помещает ## any ## во всплывающее окно. Очевидно, что теперь это ожидаемое поведение, но оно лишает меня идеи использовать мой собственный блок подтверждения, которым можно управлять с помощью оператора if.
Я попробовал это, и это не сработало:
<body class="yui-skin-sam" onbeforeunload="document.onFormClose();">
<script>
document.onFormClose = function () {
if (document.getElementById('DirtyFlag').value == "true") {
document.getElementById('DirtyFlag').value == "false";
return 'You will lose all changes made since your last save';
}
}
</script>
где DirtyFlag - скрытое поле, которое становится истинным, если существуют несохраненные изменения. Я надеялся, что размещение возврата внутри функции поможет, но не повезло.
Итак, мой вопрос: есть ли способ использовать тег onbeforeunload со встроенным возвратом, который будет обходить его до получения значения этого поля?
В качестве альтернативы (хотя это было бы не так идеально), я полагаю, я мог бы динамически добавлять или удалять тег onbeforeunload во всех местах, которые я устанавливал или сбрасывал тег getElementById. К сожалению, я тоже не знаю, как это сделать.
О, и я полностью ограничен в использовании jQuery или любой другой библиотеки javascript.