2013-10-24 67 views
4

我有一個網頁上運行的Flex應用程序,我想用命令 + 組合鍵來觸發應用某些行動。這在大多數瀏覽器上都很好,但在Safari上,瀏覽器攔截此鍵盤事件並導致瀏覽器「返回」事件。有沒有辦法,無論是通過Flex或通過頁面上的其他地方的JavaScript,我可以告訴Safari不要這樣做?的Flex禁用Safari瀏覽器的鍵盤快捷鍵

+3

這是普遍不好窗體攔截鍵盤事件,讓他們做一些他們並不意味着,實際上是閃光的輿論如此迅速下降的原因之一。我不得不建議不要這樣做,並找到另一個組合使用。 –

+1

即使這是一個壞主意,我仍然想知道它是如何做到的。 –

+0

當然,你無法通過AS3來完成。它必須通過Javascript來完成。查看http://stackoverflow.com/questions/7295508/javascript-capture-browser-shortcuts-ctrlt-n-w –

回答

3

簡短的回答,它是Safari瀏覽器的非Mac版本上已知的(小)已知錯誤。您無法可靠地阻止所有快捷鍵。也許如果你更具體地說明你試圖阻止的其他快捷方式?也許他們中的一些人會工作。例如剪貼複製有自己特殊的阻擋方法。 (雖然看起來你可能已經知道了。)

你是否在使用類似的東西?

function blockKeys(e) { 
    var blocked = new Array('c','x','v'); 
    var keyCode = (e.keyCode) ? e.keyCode : e.which; 
    var isCtrl; 
    if(window.event) 
     isCtrl = e.ctrlKey 
    else 
     isCtrl = (window.Event) ? ((e.modifiers & Event.CTRL_MASK) == Event.CTRL_MASK) : false; 

    if(isCtrl) { 
     for(i = 0; i < blocked.length; i++) { 
      if(blocked[i] == String.fromCharCode(keyCode).toLowerCase()) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 

You're not the first to get hit with this bug on here