대화 상자가 1 초 동안 실행되고 사라집니다.
사용자가 페이지를 떠날 때 대화 상자를 실행하고 있습니다. 유일한 것은 1 초 동안 실행되고 사라진다는 것입니까? 와 관련이 있다는 것을 알고 bind('beforeunload')
있지만 대화 상자는 읽을 수있는 것보다 빨리 사라집니다.
이런 일이 발생하지 않게하려면 어떻게해야합니까?
$(document).ready(function() {
// Append dialog pop-up modem to body of page
$('body').append("<div id='confirmDialog' title='Confirm'><p><span class='ui-icon ui-icon-alert' style='float:left; margin:0 7px 20px 0;'></span>Are you sure you want to leave " + brandName + "? <br /> Your order will not be saved.</p></div>");
// Create Dialog box
$('#confirmDialog').dialog({
autoOpen: false,
modal: true,
overlay: {
backgroundColor: '#000',
opacity: 0.5
},
buttons: {
'I am sure': function() {
var href = $(this).dialog('option', 'href', this.href);
window.location.href = href;
},
'Complete my order': function() {
$(this).dialog('close');
}
}
});
// Bind event to Before user leaves page with function parameter e
$(window).bind('beforeunload', function(e) {
// Mozilla takes the
var e = $('#confirmDialog').dialog('open').dialog('option', 'href', this.href);
// For IE and Firefox prior to version 4
if (e){
$('#confirmDialog').dialog('open').dialog('option', 'href', this.href);
}
// For Safari
e.$('#confirmDialog').dialog('open').dialog('option', 'href', this.href);
});
// unbind function if user clicks a link
$('a').click(function(event) {
$(window).unbind();
//event.preventDefault();
//$('#confirmDialog').dialog('option', 'href', this.href).dialog('open');
});
// unbind function if user submits a form
$('form').submit(function() {
$(window).unbind();
});
});
beforeunload
는 브라우저에 내장 된 메소드를 사용하므로 문자열을 반환해야하며 브라우저는 문자열을 표시하고 사용자에게 페이지를 나갈 것인지 묻습니다.
자체 대화 상자 (또는 jQueryUI 모달 대화 상자)를 사용하여 beforeunload
.
beforeunload
사용자를 다른 페이지로 리디렉션 할 수 없습니다.
$(window).on('beforeunload', function(){
return 'Are you sure you want to leave?';
});
그러면 'Are you sure you want to leave?'
사용자에게 페이지를 떠나고 싶은지 묻는 경고 상자가 나타납니다 .
(업데이트 : Firefox는 사용자 지정 메시지를 표시하지 않고 자체 메시지 만 표시합니다.)
If you want to run a function as the page is unloading, you can use $(window).unload()
, just note that it can't stop the page from unloading or redirect the user. (UPDATE: Chrome and Firefox block alerts in unload
.)
$(window).unload(function(){
alert('Bye.');
});
Demo: http://jsfiddle.net/3kvAC/241/
UPDATE:
$(...).unload(...)
is deprecated since jQuery v1.8, instead use:
$(window).on('unload', function(){
});
You can also use the following unload method introduced by Microsoft to achieve this. Click here to see live demo.
function closeIt()
{
return "Any string value here forces a dialog box to \n" +
"appear before closing the window.";
}
window.onbeforeunload = closeIt;
Click to read Microsoft documentation.
In my case i use it to show a 'preloader' before going to another part of my webapp, so this matches with the 'preloader' that appears in the new page opened, for an aesthetic change between pages.
What it worked for me (and I tried everything), was this:
function myLoader() {
// Show my Loader Script;
}
$( window ).on( 'beforeunload' , function() {
myLoader();
} );
참고URL : https://stackoverflow.com/questions/6063522/dialog-box-runs-for-1-sec-and-disappears
'IT Share you' 카테고리의 다른 글
PDF에 빈 줄을 삽입하는 방법은 무엇입니까? (0) | 2020.12.06 |
---|---|
동일한 키를 가진 개체가 ObjectStateManager에 이미 있습니다. (0) | 2020.12.06 |
symfony2 : 캐시 디렉토리를 쓰지 못했습니다. (0) | 2020.12.06 |
IE10이 텍스트 상자에 삽입하는 지우기 버튼을 비활성화하려면 어떻게해야합니까? (0) | 2020.12.06 |
JavaScript의 개체에서 값 가져 오기 (0) | 2020.12.06 |