2012-05-09 18 views
0

私はwebviewでアプリケーションを持っていますが、私はWebviewの本文からユーザーが選択したテキストを取得しようとしています。あなたは、オペレーティングシステムがiOSのようなものを扱うことができると思うでしょうが、Androidがまったく不十分な多くの場所のうちの1つです。私はこのウェブサイトとgoogleを調べて、私を助けるものは何も見つけませんでした。私のアプリは、幸いにも、私たちがwebviewに読み込むスクリプトと通信するために、javascriptインターフェイスを持っています。私はwebviewからテキストを選択するためにjavascriptを使うことができると思った。 Chromeの私には、JavaScriptの以下のビットでこれを行うことができます。Android:window.getSelection()はwebviewで動作しません

window.getSelection.toString(); 

今私は、上記のコマンドを実行して、私のjavascriptのメソッドへの結果を返します私のjsファイル内の関数を呼び出すボタンがありますインタフェース。そのメッセージは、私のjavascript関数の結果をトーストします。だから私はテキストを選択し、このボタンを押します。唯一の問題は、私のトーストのメッセージは次のメッセージを返すことです:私は(「.toStringを削除すると

javascript returned: 

それは

javascript returned: <my selected text> 

を返す必要がありますが)。私のjavascriptのコマンドからの一部とテキストを選択し、なぜこの作業ではないのですか?私はtehの次のメッセージ

javascript returned: undefined 

を取得]ボタンを押しますか

ここに私のコードがあります。

myNameSpace.getTextSelection = function() 
     { 
      var str; 
      if (window.getSelection){ 
       str = window.getSelection().toString(); 
      } else { 
       str = 'does not'; 
      } 
      window.myJSHandler.getSelectedText(str); 
     }; 

、ここでは、Javaの機能は、我々が取得するtryies場合は、テキストの選択は非常に別のクラスのWebTextViewにアンドロイドで行われているので、それは

public void getSelectedText(String text) 
     { 
      String str = "function called. it returned: " + text; 
      Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show(); 
     } 

答えて

0

を呼んでいるのです。これが呼び出されますHTE javascriptのですあなたは場合には、そのためにリフレクションを使用することができ、選択した単語をしたい場合は、あなたがいることをしたい場合

var range = window.getSelection(); 

が、この機能は何も返さない - JavaScriptのメソッドを使用して、単語を選択私は後でそのコードを追加します。

+0

Ravi、Plsがこの反射を追加 –

関連する問題