我需要访问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();
}
}
}
});
答案 0 :(得分:4)
我认为您可以将paste事件侦听器添加到您的组合(实际上是其选择器)并使用ClipboardEvent接口的方法获取剪贴板数据,如下所示:
combo.getEl().addListener(
'paste',
function(event, element, options) {
var clipboardData = event.browserEvent.clipboardData;
console.log(clipboardData.getData('Text'));
}
);
答案 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。