2017-04-17 64 views
2

我想在加載頁面之前將全局JavaScript函數注入到webview中。我有一個名爲testJS,我在我注入功能。在我WebViewClient我做了以下在頁面加載時將JavaScript函數注入WebView

private String getJS() { 
    return "javascript:function testJS() { return { test: 'Hello World' };}"; 
} 

@Override 
public void onPageStarted(WebView view, String url, Bitmap favicon) { 
    view.loadUrl(getJS()); 
} 

當我檢查網頁,window.testJS是不確定的。

如果我做了以下操作,window.testJS在web視圖中具有正確的功能,但它沒有足夠早的加載,因此無法正常工作。

@Override 
public void onPageFinished(WebView view, String url) { 
    view.loadUrl(getJS()); 
} 

在iOS中我可以注入一個腳本atDocumentStart做等價和它的作品我希望它的方式。

let userScript = WKUserScript(
     source: scriptContent!, 
     injectionTime: WKUserScriptInjectionTime.atDocumentStart, 
     forMainFrameOnly: false) 
contentController.addUserScript(userScript) 

有沒有另一種方法,我可以在Android WebView中實現這一點?它工作在onPageFinished但不onPageStarted。

回答

-1

首先儘量讓JavaScript作爲設置功能:

WebSettings webSettings = yourWebView.getSettings(); 
webSettings.setJavaScriptEnabled(true); 

然後:

yourWebView.addJavascriptInterface(new Object(){ 
     @JavascriptInterface 
     public void test(){ 
      Log.d("JS", "test"); 
      } 
    },"Android"); 
yourWebview.loadUrl("javascript:functionName(\"" + argument + "\")"); 

參考以下這些問題:

Android Calling JavaScript functions in WebView

Call javascript function in Android WebView

+0

它已啓用。這不是問題。問題是JavaScript沒有從onPageStarted正確加載。 – kittels

+0

我看到了,我更新了我的答案,試試 – 2017-04-17 15:25:52

+0

我的JavaScript去了哪裏?如果你只是加載一個javascript函數,接口的意義是什麼 – kittels

相關問題