Extjs6:获取有关组合框的Keydown事件的剪贴板数据

时间:2016-06-21 07:35:13

标签: javascript html extjs combobox extjs5

我需要访问Extjs Combobox中keydown事件的剪贴板数据,以执行某些操作。
我试过window.clipboardData。 请找小提琴:https://fiddle.sencha.com/#fiddle/1cc2

Ext.create('Ext.form.field.Tag',{
    renderTo:Ext.getBody(),
    createNewOnEnter:true,
    store:[1,2,3],
    enableKeyEvents:true,
    listeners:{
        keydown:function(combo,e){
            if(e.getKey() === e.V && e.ctrlKey){
                //get Clipboard data here
                combo.preventKeyUpEvent = e.V;
                e.stopEvent();
            }
        }
    }
});

2 个答案:

答案 0 :(得分:4)

我认为您可以将paste事件侦听器添加到您的组合(实际上是其选择器)并使用ClipboardEvent接口的方法获取剪贴板数据,如下所示:

combo.getEl().addListener(
    'paste',
    function(event, element, options) {
        var clipboardData = event.browserEvent.clipboardData;
        console.log(clipboardData.getData('Text'));
    }
);

Working fiddle

答案 1 :(得分:1)

不确定你做错了什么,但如果我将console.log(window.clipboardData)添加到你的小提琴中,它在我的IE11中确实有用:

Ext.application({
    name : 'Fiddle',

    launch : function() {
        Ext.create('Ext.form.field.Tag',{
            renderTo:Ext.getBody(),
            createNewOnEnter:true,
            store:[1,2,3],
            enableKeyEvents:true,
            listeners:{
                keydown:function(combo,e){

                    if(e.getKey() === e.V && e.ctrlKey){
                        console.log(window.clipboardData);
                        combo.preventKeyUpEvent = e.V;
                        e.stopEvent();
                    }
                }
            }
        });
    }
});

我不建议使用它,因为window.clipboardData仅限IE。您应该使用W3C clipboard API instead,这是标准化草案和already implemented in all recent browsers