2

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

  1. 从包含以下 EXTJ 示例的标准 HTML 页面中选择并突出显示文本
  2. 右键单击以调用内容菜单
  3. 选择可从绑定到上下文菜单的事件侦听器中使用,但在从上下文菜单中输入或选择选项时不可用。

注意:由于控制台对象,示例目前在 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());
    });
});
4

1 回答 1

0

单击上下文菜单时选择不可用,因为右键单击后,选择被清除。当您左键单击菜单项时,没有选择任何内容。看看这个小提琴。您可以看到右键单击后立即清除选择。

正如this answer中所建议的那样,您可能需要变得更加花哨并进行保存/恢复之类的事情。

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

于 2012-10-09T19:47:11.297 回答