2012-03-21 7 views
1

WebViewで使用するJavascriptでHTMLの文字列を返すクラスを作成しようとしています。 HTMLとJavascriptを返すのはうまくいきますが、返されたHTMLでライブラリを読み込む際に問題があります。例として、これはうまく機能:WebView.Load()を使用して、JSライブラリへの参照を使用して動的HTMLを読み込みますか?

public static String helloWorld() { 
    String html; 
    html = "<!DOCTYPE html>" + 
      "<html>" + 
      "<head>" + 
      "<title>" + 
      "</title>" + 
      "</head>" + 
      "<body>" + 
      "<script>" + 
      "document.write(\"Hello, World\");" + 
      "</script>" + 
      "</body>" + 
      "</html>"; 
    return html; 
} 

をただし、これはしません:

public static String helloWorld() { 
    String html; 
    html = "<!DOCTYPE html>" + 
      "<html>" + 
      "<head>" + 
      "<title>" + 
      "</title>" + 
      "<script src=\"../assets/src/external_script.js\"></script>" + 
      "</head>" + 
      "<body>" + 
      "<script>" + 
      "external_script_function();" + 
      "</script>" + 
      "</body>" + 
      "</html>"; 
    return html; 
} 

私はexternal_script.jsインポートのファイルパスが間違っていることを推測していますか? WebView.LoadUrl(myLocalHtmlFile);を使用すると、他のJSファイルを使用するときに機能します。この仕事を適切に行うにはどうすればいいですか?あるいは、同様の結果を得るためのより良い方法がありますか?

答えて

0

WebsitesにassetsフォルダをベースURLとしてフィードする必要があります。

MyWebView.loadDataWithBaseURL("file:///android_asset/", helloWorld()); 

そして<script>タグは次のように行くだろう:

<script src="src/external_script.js"></script> 

ライブラリはassets/srcの下にあると仮定すると、このように。そして、はい、トライアドのようにJavaScriptを有効にする必要があります。

+0

これはまさに私が探していたものです。ありがとう。 –

0

アセットを書き込むので、私はあなたがEclipseに置いたファイルをロードしようとしているか、あなたのアプリにバンドルされているIDEを使用しています。これはAPKとAFAIKの内部に保存され、アプリケーションの作業ディレクトリに「解凍」されません。

これは、SDカードまたは内部メモリに手動で配置するか、内部でロードしてWebViewに送信する前に最終HTMLに動的に注入する必要があることを意味します。

個人的には、それは混乱の少ないものにするため、私は第2の方法に行きます。

関連する問題