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>

但是为什么当我在页面上选择单词时无法出现该单词(弹出窗口为空白)..

4

2 回答 2

0

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

此外,该getSelected()功能是不必要的复杂。由于您的代码只需要在 Firefox 中运行,您可以使用:

function getSelected() {
    return window.getSelection().toString();
}
于 2010-12-19T13:23:24.583 回答
0

window.getSelection()从 chrome 窗口返回选择,该窗口几乎总是空的。正如您所发现的,您需要使用document.commandDispatcher.focusedWindow找出哪个窗口具有活动选择。(如果您很懒惰,您可能已经尝试过content.getSelection(),但这仅在页面没有框架时才有效。)

于 2011-01-13T23:53:24.627 回答