获取extjs中面板中选定文本的快捷方式

获取extjs中面板中选定文本的快捷方式,extjs,selection,panel,Extjs,Selection,Panel,如何在extjs中获取面板中的选定文本? panel html属性包含一些格式化的html文本,但我只希望得到纯文本,而不是格式化的html文本。那么,如果用户选择了一些文本,如何获得选择 Ext.application({ name: 'Fiddle', launch: function () { Ext.create('Ext.Container', { renderTo: Ext.getBody(), ite

如何在extjs中获取面板中的选定文本? panel html属性包含一些格式化的html文本,但我只希望得到纯文本,而不是格式化的html文本。那么,如果用户选择了一些文本,如何获得选择

Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.create('Ext.Container', {
            renderTo: Ext.getBody(),
            items: [{
                xtype: 'panel',
                title: 'my Panel',
                html: "Some text. Let's say for the sake of this question: <i>Lorem ipsum dolor sit amet,...</i>" ,
                width: 350
                },
                {
                xtype: 'button',
                text: 'my Button',
                listeners:{
                    click: function(){
                        var selectedText=''; //THIS IS WHERE THE QUESTION IS
                        alert(selectedText);
                    }
                }
            }]
        });
    }
});
Ext.application({
名字:“小提琴”,
启动:函数(){
Ext.create('Ext.Container'{
renderTo:Ext.getBody(),
项目:[{
xtype:'面板',
标题:“我的小组”,
html:“一些文本。让我们假设为了这个问题:Lorem ipsum dolor sit amet,…”,
宽度:350
},
{
xtype:'按钮',
文本:“我的按钮”,
听众:{
单击:函数(){
var selectedText='';//这就是问题所在
警报(选择文本);
}
}
}]
});
}
});

您可以使用window.getSelection().toString()和document.selection.createRange().text

Ext.application({
名字:“小提琴”,
启动:函数(){
Ext.create('Ext.panel.panel'{
renderTo:Ext.getBody(),
布局:{
类型:“hbox”,
对齐:“拉伸”
},
默认值:{
身高:200,
弹性:1
},
项目:[{
xtype:'面板',
itemId:'panelOne',
标题:“第一小组”,
html:“一些文本。让我们假设为了这个问题:Lorem ipsum dolor sit amet,…”
}, {
xtype:'面板',
itemId:'panelTwo',
标题:“第二小组”,
html:“一些文本。让我们假设为了这个问题:Lorem ipsum dolor sit amet,…”
}],
按钮:[{
xtype:'按钮',
文本:“我的按钮”,
听众:{
单击:函数(){
var selection=window.getSelection();
const panelItemIds=['panelOne','panelTwo'];
panelItemId.forEach(panelItemId=>{
var panelComponent=this.up('panel').getComponent(panelItemId);
var node=selection.baseNode;
if(面板组件){
var panelComponentDom=panelComponent.getEl().dom;
while(节点!==null){
if(节点==panelComponentDom){
log(`Found selection“${panelComponent.getTitle()}”面板中的“${selection.toString()}”选项)
}
node=node.parentNode;
}
}
});
}
}
}]
});
}
});

谢谢。假设我有两个面板(左面板和右面板),我想知道文本是在左面板中选择的还是在右面板中选择的。请再次查看。。
Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.create('Ext.panel.Panel', {
            renderTo: Ext.getBody(),
            layout: {
                type: 'hbox',
                align: 'stretch'
            },
            defaults: {
                height: 200,
                flex: 1
            },
            items: [{
                xtype: 'panel',
                itemId: 'panelOne',
                title: 'Panel One',
                html: "Some <b>text</b>. Let's say for the sake of this question: <i>Lorem ipsum dolor sit amet,...</i>"
            }, {
                xtype: 'panel',
                itemId: 'panelTwo',
                title: 'Panel Two',
                html: "Some <b>text</b>. Let's say for the sake of this question: <i>Lorem ipsum dolor sit amet,...</i>"
            }],
            buttons: [{
                xtype: 'button',
                text: 'my Button',
                listeners: {
                    click: function () {
                        var selection = window.getSelection();
                        const panelItemIds = ['panelOne', 'panelTwo'];
                        panelItemIds.forEach(panelItemId => {
                            var panelComponent = this.up('panel').getComponent(panelItemId);
                            var node = selection.baseNode;
                            if (panelComponent) {
                                var panelComponentDom = panelComponent.getEl().dom;
                                while (node !== null) {
                                    if (node == panelComponentDom) {
                                        console.log(`Found selection "${selection.toString()}" in panel "${panelComponent.getTitle()}"`)
                                    }
                                    node = node.parentNode;
                                }
                            }
                        });
                    }
                }
            }]
        });
    }
});