2013-03-08 27 views
1

我的一些用戶在鍵入時意外擊中F5,並導致它們丟失了所有鍵入的內容。我不需要防止點擊刷新按鈕。在Silverlight中禁用F5

我試過使用下面的javascript,但它只在用戶不關注Silverlight應用時才起作用(即當用戶點擊SL應用以外的某個地方時它工作,但onkeydown事件不會在觸發時觸發用戶專注於SL)。

document.onkeydown=function(e) { 
    var event = window.event || e; 
    if (event.keyCode == 116) { 
     event.keyCode = 0; 
     alert("test"); 
     return false; 
    } 
} 

回答

-2

我會說,這樣的事情?

document.onkeydown = function() 
{ 
    switch (event.keyCode) 
    { 
     case 116 : //F5 button 
      event.returnValue = false; 
      event.keyCode = 0; 
      return false; 
     case 82 : //R button 
      if (event.ctrlKey) 
      { 
       event.returnValue = false; 
       event.keyCode = 0; 
       return false; 
      } 
    } 
} 

注:按ctrl + r是一個快捷鍵刷新以及

+1

這個問題說,當SL應用程序集中時,javascript將不起作用。 – 2013-03-08 14:54:16

+0

是的,上面的代碼只能在普通的html頁面中使用。如果Silverlight應用程序具有焦點,它將不起作用。 另外,Ctrl R並不是問題,因爲它是一個雙手按鍵,因此更容易碰撞。 – elty123 2013-03-08 15:51:08

1

可能的處理這種情況會使用onbeforeunload event,並要求用戶確認的最佳方式。通過這種方式,您可以在不處理所有可能的快捷方式的情況下,從合法的標籤中意外刷新或關閉標籤。

window.onbeforeunload = function(e) { 
    return 'Are you sure you want to leave without saving your changes?'; 
}; 

只有存在一些未保存的更改時,您甚至可以顯示確認對話框。

相關問題