为什么所选文字没有出现?

时间:2010-12-19 08:11:25

标签: javascript dom firefox-addon xul add-on

嗨我的第一个插件有问题.. 我尝试使用此功能选择网站页面上的单词

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>

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

2 个答案:

答案 0 :(得分:0)

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

此外,getSelected()函数不必要地复杂。由于您的代码只需要在Firefox中运行,因此您可以使用:

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

答案 1 :(得分:0)

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