当前位置:  开发笔记 > 编程语言 > 正文

在YUI中防止键监听器中的默认行为

如何解决《在YUI中防止键监听器中的默认行为》经验,为你挑选了1个好方法。

我有一个网页,我想将Ctrl + N重新映射到不同的行为.我按照YUI的注册Key Listeners示例调用了我的函数,但Firefox仍然创建了一个新的浏览器窗口.事情似乎在IE7上运行良好.如何阻止新窗口显示?

例:

var kl2 = new YAHOO.util.KeyListener(document, { ctrl:true, keys:78 },
             {fn:function(event) {
                     YAHOO.util.Event.stopEvent(event); // Doesn't help
                     alert('Click');}});
kl2.enable();

可以删除默认行为.Google文档会覆盖Ctrl + S以保存文档,而不是显示Firefox的保存对话框.我用Ctrl + S尝试了上面的例子,但Firefox的保存对话框仍然弹出.由于谷歌可以阻止保存对话框出现,我确信有一种方法可以阻止大多数默认键盘快捷键.



1> Tac-Tics..:

诀窍是'fn'功能很糟糕.

在实验上,您可以看到fn的函数类型有两个参数.第一个参数实际上包含事件类型.第二个包含......这很复杂:一个数组包含索引0处的代码点和索引1处的实际事件对象.

所以改变你的代码,它应该是这样的:

function callback(type, args)
{
    var event = args[1]; // the actual event object
    alert('Click');

    // like stopEvent, but the event still propogates to other YUI handlers
    YAHOO.util.Event.preventDefault(event);
}
var kl2 = new YAHOO.util.KeyListener(document, { ctrl:true, keys:78 }, {fn:callback});
kl2.enable();

此外,为了热爱lisp,请不要在代码中使用原始代码点.使用'N'.charCodeAt(0)代替"78".或者将其作为一个函数包装起来

function ord(char)
{
    return char.charCodeAt(0);
}

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有