簡體   English   中英

如何禁用瀏覽器功能

[英]How to disable browser feature

我正在開發一個項目,用戶可以在其中獲得一個構想頁面。 我希望用戶不要單擊返回或關閉選項卡或重新加載。 現在,我需要禁用瀏覽器功能或返回按鈕,關閉選項卡事件或將事件重新加載到Java腳本,以便可以采取必要的步驟來防止數據丟失。 我用了這個:

window.onbeforeunload = function() 
{
     return "Try This"; 
};

但這即使在我單擊重定向頁面的按鈕時也會被調用。

如果您只想接收警報,請了解用戶最終將控制住並可以繞過警報,然后執行您正在做的事情,但是使用一個在導航且不希望接收警報時將其禁用的標志。 例如:

var warnWhenLeaving = true;
window.onbeforeunload = function() {
    if (warnWhenLeaving) {
        return "your message here";
    }
};

然后在點擊處理程序上的鏈接/按鈕/將用戶移動到的所有內容(不希望其彈出):

warnWhenLeaving = false;

在評論中,您詢問:

我可以知道使用此功能生成警報時用戶單擊了什么。 那可以知道用戶單擊了什么(離開此頁面/留在頁面上)

答案是: 有點 ,但不是真的。 幾乎可以肯定,最好不要嘗試。

但是:如果您看到onbeforeunload函數正在運行,那么您就知道用戶正在離開頁面,瀏覽器可能會向他們顯示您的消息。 我熟悉的瀏覽器會像alert一樣處理彈出窗口:彈出窗口在那里時,頁面上的所有JavaScript代碼都會被阻止。 因此,如果您通過setTimeout安排回調,則當它們離開時將不會得到該回調,而如果它們停留則將得到該回調:

window.onbeforeunload = function() {
  if (warnWhenLeaving) {
    setTimeout(function() {
      display("You stayed, yay!");
    }, 0);
    return "No, don't go!";
  }
};

現場例子

因此,從理論上講,如果您獲得回調,則它們會保留下來; 如果看到unload事件,他們就離開了。 (請注意,有少數的事情,你可以在做unload事件。)

我已經在當前的Chrome,當前的Firefox,IE8和IE11上進行過嘗試:它適用於所有這些。 任何人都懷疑它是否將在其中任何一個的下一個版本中起作用。 它是否必須在移動瀏覽器上可靠運行是您必須測試的問題,並且可能會再次發生變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM