sid*_*bob 5 javascript android webview
我试图在页面加载之前将全局 JavaScript 函数注入到 Web 视图中。我有一个名为testJS我正在注入的函数。在我的 WebViewClient 中,我正在执行以下操作
private String getJS() {
return "javascript:function testJS() { return { test: 'Hello World' };}";
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
view.loadUrl(getJS());
}
Run Code Online (Sandbox Code Playgroud)
当我检查页面时,window.testJS未定义。
如果我执行以下操作,window.testJS网络视图中具有正确的功能,但它加载得不够早,因此无法正常工作。
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl(getJS());
}
Run Code Online (Sandbox Code Playgroud)
在 iOS 中,我可以通过注入脚本执行相同的操作atDocumentStart,并且它按照我期望的方式工作。
let userScript = WKUserScript(
source: scriptContent!,
injectionTime: WKUserScriptInjectionTime.atDocumentStart,
forMainFrameOnly: false)
contentController.addUserScript(userScript)
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以在 android WebView 中实现此目的?它适用于PageFinished,但不适用于PageStarted。
小智 -4
首先尝试允许 javascript 作为设置功能:
WebSettings webSettings = yourWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
Run Code Online (Sandbox Code Playgroud)
然后:
yourWebView.addJavascriptInterface(new Object(){
@JavascriptInterface
public void test(){
Log.d("JS", "test");
}
},"Android");
yourWebview.loadUrl("javascript:functionName(\"" + argument + "\")");
Run Code Online (Sandbox Code Playgroud)
参考这些问题:
Android 在WebView中调用JavaScript函数
在Android WebView中调用javascript函数
| 归档时间: |
|
| 查看次数: |
2069 次 |
| 最近记录: |