Flex 禁用 Safari 键盘快捷键

Dan*_*ton 5 javascript apache-flex safari keyboard-shortcuts

我有一个在网页上运行的 Flex 应用程序,我想使用Command+组合键来触发应用程序中的某些操作。这在大多数浏览器上都很好,但在 Safari 上,浏览器会拦截此键盘事件并导致浏览器“返回”事件。有没有办法,通过 Flex 或通过页面上其他地方的 JavaScript,我可以告诉 Safari 不要这样做?

Sti*_*ony 3

简短的回答,这是非 Mac 版本 safari 上的一个(很少)已知的错误。您无法可靠地阻止所有快捷键。也许如果您更具体地说明您想要阻止哪些其他快捷方式?也许其中一些会起作用。例如剪切粘贴复制有自己特殊的阻止方法。(尽管看起来你可能已经知道了。)

你在用这样的东西吗?

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;
}
Run Code Online (Sandbox Code Playgroud)

您不是第一个遇到此错误的人