2014-04-23 41 views
0

我有我從sonewhere他人竊取以下beforeunload功能....onBeforeUnload自定義按鈕的消息

$().ready(function() { 
    $("#posManagerLoginForm").trigger("submit"); 

    $(window).bind("beforeunload", function(){  
     window.setTimeout(function() { 
      window.location = "home.htm"; 
     }, 0); 
     window.onbeforeunload = null; // necessary to prevent infinite loop that kills your browser 
     return "Press 'Stay On Page' to go to Reporting Manager home"; 
    }); 
}); 

不管我選擇我被導航到home.htm什麼選項。有沒有辦法讓對話框成爲OK按鈕而不是默認的「離開頁面」或「保持在頁面上」選項?

或者也許別人可以提出一個熱點更好的建議來處理?

感謝

+0

的可能重複[我怎樣才能重寫OnBeforeUnload對話框並用我自己更換呢?(HTTP://計算器.COM /問題/ 276660 /何燦的i-覆蓋最onbeforeunload-對話和替換,它與 - 我 - 自己) – Moes

回答

2

您不能覆蓋onbeforeunload對話框的造型。相信我,我在之前的項目中嘗試過。

參考:http://msdn.microsoft.com/en-us/library/ms536907%28VS.85%29.aspx

它內置到瀏覽器中的對象,你有沒有對其進行控制。

但是,您可以設置自己的對話框來顯示onbeforeunload事件何時觸發,但不會禁用普通人會顯示的事件。很煩人,是的。

1

你仍然被重定向的原因是因爲你實際上沒有做任何事情來阻止它。

如果你想打開一個警告框的形式被提交之前,請務必防止默認行爲(這是提交表單),然後點擊OK後,重定向已被點擊這樣的:

$().ready(function() { 
    $("#posManagerLoginForm").submit(function(event) { 
     event.preventDefault(); 
     alert("Press 'OK' to go to Reporting Manager home"); 
     window.location = "home.htm"; 
    }); 
}); 

雖然不知道這會是什麼用途。如果你想留在表單上如果按下不同的按鈕(說「取消」爲例),那麼你寧願要使用這樣的「確認」:

$().ready(function() { 
    $("#posManagerLoginForm").submit(function(event) { 
     event.preventDefault(); 
     if confirm(("Press 'OK' to go to Reporting Manager home")) 
      window.location = "home.htm"; 
    }); 
}); 

你可以更換alertconfirm也有自定義對話框,具體取決於您使用的庫。只要確保你把window.location = "home.htm"放在對話框的函數中,否則它會立即執行。

舉個例子,你可能想看看到的jQuery UI的對話框這裏:https://jqueryui.com/dialog/