2010-12-19 74 views
0

您好,我有问题,我的第一个插件.. 我尝试使用此功能为什么选定的文本不显示?

function getSelected() { 
    var userSelection; 
    if (window.getSelection) { 
     userSelection = window.getSelection(); 
    } else if (document.selection) { 
     userSelection = document.selection.createRange(); 
    } 
    return userSelection; 
} 

function getText() { 
var select = getSelected()+ ""; 
    alert(select); 
} 
在我的XUL

我用这种方式执行上述功能选择的网站页面上的字:

<menuitem id="inlinetransContextMenuPage" 
    label="Terjemahkan dengan inlinetrans" 
    onclick="overlay.getText()" /> 
</popup> 

但为什么我当我选择页面上的字的字无法显示(弹出的是空白)..

回答

0

window.getSelection()从Chrome窗口,它几乎总是空,则返回的选择。正如您发现的那样,您需要使用document.commandDispatcher.focusedWindow来确定哪个窗口具有活动选择。 (如果你懒惰,你可能试过content.getSelection(),但只有当页面没有帧时才有效。)

0

可能发生的情况是,当click事件在XUL <menuitem>上触发时,点击它的动作已经破坏了页面中的选择。尝试使用mousedown事件(即更改onclickonmousedown)。

此外,getSelected()函数是不必要的复杂。由于您的代码只需要在Firefox的工作,你可以使用:

function getSelected() { 
    return window.getSelection().toString(); 
} 
+0

@ Tim Down:当我使用window.getSelection()。toString()时,它仍然不起作用。但是当我尝试使用document.commandDispatcher.focusedWindow.getSelection()。toString();它的工作。为什么选择的单词不能以第一种方式出现,并且可能以第二种方式出现.. ?? – user495688 2010-12-20 01:17:13

+0

@ user495688你真的在使用单个窗口吗?代码'window == document.commandDispatcher.focusedWindow'输出true或false? – 2010-12-20 15:24:16

+0

@ Tom Barito:它的工作原理..:D – user495688 2010-12-20 15:46:04

相关问题