2011-01-21 8 views
0

webviewに外部javascriptを挿入し、その関数の1つを実行します。​​終了後、アラートが発生し、活動
に文字列を返しますが、これは私がそれを行う方法ですが、それはAndroid webviewで外部jsを注入し、関数を実行し、警告を発生させます。

view.loadUrl("javascript:(function() { var script=document.createElement('script');script.type='text/javascript';script.src=" + jsFileURL + ";" + "document.getElementsByTagName('head').item(0).appendChild(script);window.HTMLOUT.showHTML(execute());})()");

これは私が実装する方法である(JSは既にテストされて)動作するようには思えませんアラートがChromeClient

browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); browser.setWebViewClient(new mWebViewClient()); browser.setWebChromeClient(new mChromeClient()); browser.loadUrl("file:///android_asset/Travian comx2b.htm");

答えて

0

でオーバーライドされている間HTMLOUT、私はuは、単一引用符でjsFileUrlを囲むために持っていると思います。

script.src='" + jsFileURL + "';" 
+0

をチェックしてみてくださいません、私は他の多くのテストと一緒にこれを行っています。私は10回の試行のうち1回それが働いたが、それはすべてであると言わなければならない。私は安定した負荷を防ぐ他の問題もあると思います。次に、私は作品を掲載しました。 – kkakosim

3

[OK]をクリックして回避策を見つけましたが、残念ながら「解決策」ではありません。ソースsrcが私のjavascriptを含んでいるテキストファイルscript.js(関数や無地コマンドの両方)

//get script 
InputStream is; 
     String src= ""; 
     try { 
      is = getAssets().open("travianbot.js"); 
      int size = is.available(); 
      byte[] buffer = new byte[size]; 
      is.read(buffer); 
      is.close(); 
      // Convert the buffer into a string. 
      src = new String(buffer); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

script.jsのサンプル(「;」行末に注意してください)から来ている間、私はこの負荷​​を使用しました私はそれをテストしていないリモートスクリプトため

function addItem(v, link, x, y, result) { 
    //function commands 
} 
function popup() { 
    alert(execute().split("@")); 
}  
function execute(){ 
    //function commands 
    additem(...); 
} 
// plain commands 
....... 

一つの解決は、リモートスクリプトを(例えばInputStreamとして)を解析して、プレーンテキストとしてそれを含めることです。

関連する問題