Extjs KeyMap 不作用于 defaultEventAction,但执行默认的浏览器操作

Extjs KeyMap doesn't act on defaultEventAction but performs the default browser action

本文关键字:默认 执行 浏览器 操作 KeyMap 作用于 defaultEventAction Extjs      更新时间:2023-09-26

使用 ExtJS 4.1.1 即使在 Ext.util.KeyMap 中我已经设置了 defaultEventAction: 'preventDefault' 在 fn : 函数中我也设置了 e.preventDefault(); 它仍然在 chrome 中打开新选项卡?我只希望该字段执行实现键的操作fn,而不是打开新选项卡的默认浏览器操作。这怎么可能?

    Ext.onReady(function () {
    var bcTextField = Ext.create('Ext.form.Text', {
        xtype: 'textfield',
        renderTo: 'console-output',
        emptyText: 'Enter Barcode/Accession Number',
        width: 200,
        margin: '0'
    });
    var map = new Ext.util.KeyMap({
        target: bcTextField.getEl(),
        binding: [{
            key: "t",
            ctrl: true,
            scope: this,
            defaultEventAction: 'preventDefault',
            fn: function (key, e) {
                e.preventDefault();
                alert('Ctrl + t was pressed.');
            }
        }]
    });
});
感谢

任何形式的帮助。

在此线程中检查 Omnosis 的答案。给出了有关捕获此类事件的详细描述。希望对您有所帮助。

JavaScript 捕获浏览器快捷方式 (Ctrl+T/N/w)

你需要 e.stopEvent();

这是我们使用的:

var map = new Ext.util.KeyMap({
    target: Ext.getBody(),
    binding: [{
        key: Ext.EventObject.F,
        ctrl: true,
        fn: function (key, e) {
            e.stopEvent(); //This stops the default behaviour ;-)
            //logic here...
        }
    }],
    scope: me
});