调用Ext.menu.Menu实例时获取ExtJS Selection对象

时间:2012-09-25 09:34:40

标签: javascript dom extjs selection

我在调用Ext.menu.Menu实例时尝试从DOM获取当前选定的文本时遇到问题。这是一个简化的例子。

  1. 从包含以下EXTJs示例的标准HTML页面中选择并突出显示文本
  2. 右键单击以调用内容菜单
  3. 可以从绑定到上下文菜单的事件侦听器中进行选择,但在上下文菜单中输入或选择选项时不可用。
  4. 注意:由于控制台对象

    ,示例目前在Chrome和Firefox中有效
    Ext.onReady(function() {
        // Context Menu
        var menu = Ext.create('Ext.menu.Menu', {
        items : [{
            text : 'Copy',
            handler : function() {
            // Selection is not available here
            console.log("On Context menu item:" + window.getSelection().toString());
    
            }
        }],
        listeners : {
            mouseenter : function() {
            // Selection is not available here
            console.log("Enter menu render: " + window.getSelection().toString());
            },
            activate : function () {
            // Selection is still available
            console.log("Activate Context menu render:" + window.getSelection().toString());
            }
        }
        });
    
        // Bind to contextmenu event listener 
        Ext.getDoc().on('contextmenu', function(ev) {
        menu.showAt(ev.getXY());
        ev.stopEvent();
        // Selection is available
        console.log("On Context menu :" + window.getSelection().toString());
        });
    });
    

1 个答案:

答案 0 :(得分:0)

单击上下文菜单时无法进行选择,因为右键单击后,选择将被清除。当您单击菜单项时,没有选择任何内容。看看这个fiddle。您可以看到右键单击后立即清除选择。

this answer中所述,您可能需要更加花哨并进行保存/恢复。

有关解决方案的示例,请参阅this fiddle