2016-01-29 79 views
2

嘿,我想在webview中注入一些代碼並查看代碼是否成功。我試圖重寫WebChromeClient的onConsoleMessage方法,但它只報告的代碼是否未捕獲的參考如何從android webview獲取Javascript消息

public boolean onConsoleMessage (ConsoleMessage consoleMessage){ 
    System.out.println(consoleMessage.message()); 
} 

我只得到這樣的消息:

Uncaught ReferenceError: noob is not defined 

當我執行像

一個有效的命令
document.getElementById("mainPage").innerHTML = "Hello Dolly."; 

我想以某種方式知道命令成功或失敗。 mainPage div的內容改變了,但是我沒有從onConsole方法得到消息,無論命令是否成功完成。 任何想法我可以做什麼? 在此先感謝

+0

咯咯地笑'菜鳥不defined'。你有沒有嘗試通過Chrome連接到它? –

+0

'onConsoleMessage'只有在您使用控制檯執行某些操作時纔會起作用,例如'console.log'。你可以在你的語句之後放置'console.log' *,以確保它沒有崩潰或什麼。 –

+0

必須有一些表明JavaScript已成功的任何想法? –

回答

4

該方法是一個回調,它不會做你想做的。

試試這個

webView.loadUrl("javascript:alert('Hey there!')"); 

注入的JavaScript。

然後,您將自定義WebViewClient設置爲WebView並覆蓋onReceivedError以檢測任何JS錯誤。

Theres also this method evaluateJavascript which which is useful for injecting JS and detect it it succeeded。您的腳本字符串應該是這樣的:

(function() { 
    try { 
     //do something 
     return "ok"; 
    } catch(err){ 
     return "error"; 
    } 
})(); 

所以,你會這樣稱呼它:

mWebView.evaluateJavascript(<above script here>, new ValueCallback<String>() { 
    @Override 
    public void onReceiveValue(String s) { 
     if("ok".equals(s)){ 

     } else { 
      //error 
     } 
    } 
});