2011-01-21 41 views
0

我想在webview中注入一個外部javascript並執行它的一個函數​​。完成後發出警報和字符串返回到活動
這是我如何做到這一點,但它似乎不工作(js的已測試)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());})()");

我這是怎麼實現HTMLOUT,而警報在ChromeClient

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

回答

0

overrided我認爲u必須附上jsFileUrl在單引號。

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

沒有我曾與許多其他測試一起做。我不得不說,十次嘗試中只有一次有效,但僅此而已。我想還有其他問題會阻止穩定的負載。接下來我發佈了一項工作。 – kkakosim 2011-01-25 07:28:35

3

確定經過很多很多次嘗試後,我找到了解決方法,但不幸的是不是「解決方案」。我用這個負載​​而源src來自一個文本文件script.js包括我的JavaScript(這兩種功能和滑動命令)

//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 
....... 

一個的分辨率,是解析遠程腳本(例如,作爲輸入流),然後包括它作爲純文本。