2010-12-19 30 views
0

こんにちは私はこのように、上記の機能を実行選択したテキストが表示されないのはなぜですか?</p> <p> :

私のXULで
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); 
} 

この機能を持つWebサイトのページ上の単語を選択しよう ...私の最初のアドオンに問題があります

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

が、私はページ上の単語を選択したときに、なぜ私は単語が(ポップアップが空白で)表示することはできません。..

答えて

0

window.getSelection()は、ほぼ常に空であるクロムウィンドウから選択を返します。発見したように、アクティブな選択肢があるウィンドウを見つけるには、document.commandDispatcher.focusedWindowを使用する必要があります。 (あなたが怠け者なら、あなたはcontent.getSelection()しようとしているかもしれませんが、ページには何のフレームを持っていない場合ということにのみ動作します。)ティム・ダウン@

0

XUL <menuitem>clickイベントが発生するまでに、クリックするとページ内の選択が破棄される可能性があります。代わりにmousedownイベントを使用してください(onclickからonmousedownに変更)。

また、getSelected()の機能は、不必要に複雑です。あなたのコードはFirefoxのみで作業する必要があるため、あなたが使用することができます。

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

:それはまだ動作していない、私はwindow.getSelectionを使用するときに()toString()を;。しかし、私はdocument.commandDispatcher.focusedWindow.getSelection()を使用しようとします。toString();それは働く。選択された単語が最初の方法で表示されず、2番目の方法で表示される理由は何ですか? – user495688

+0

@ user495688あなたは本当に1つのウィンドウで作業していますか? 'window == document.commandDispatcher.focusedWindow'というコードは真か偽を出力しますか?トムBarito @ –

+0

:それが動作します..:D – user495688

関連する問題