Мне нужно создать диалог на моем сайте входа. Проблема в том, что он появляется каждый раз, и я не могу закрыть его (нажмите на кнопку, чтобы обновить сайт, и снова появится диалоговое окно). Я также знаю, что знаю причину, но я могу это исправить.
Это мой диалог
<p:dialog id="ac-wrapper" widgetVar="test" style='display: none; background:white;' modal="true"
resizable="false" closeOnEscape="true" closable="true" visible="true">
<div id="popup">
<h2>Some Content</h2>
<input type="submit" name="submit" value="Submit"
onclick="DialogBox('hide')" />
</div>
</p:dialog>
Вот javascript, который должен обрабатывать это:
<script type="text/javascript">
$ = jQuery;
function DialogBox(hideOrshow) {
if (hideOrshow == 'hide') {
localStorage.setItem("isShown",1);
document.getElementById('ac-wrapper').style.display = "none";
document.getElementById('ac-wrapper').visible="false";
$("#ac-wrapper").close();
}
else if(localStorage.getItem("isShown") == null) {
document.getElementById('ac-wrapper').removeAttribute('style');
localStorage.setItem("isShown",1);
}
}
window.onload = function () {
setTimeout(function () {
if(localStorage.getItem("isShown") != 1 ){
DialogBox('show');
}
else if(localStorage.getItem("isShown")){
$("#ac-wrapper").remove();
}}, 1000);
}
</script>
При рендеринге сайта диалоговое окно всегда появляется, потому что атрибут visible имеет значение true. Я думаю, порядок неверный. Он должен проверить локальное хранилище, а затем отобразить элементы, я не могу заставить его работать правильно. Я также искал ответы здесь с похожими проблемами, но ничего не помогло.