使用Android Webview覆盖当前Javascript函数
我正在将我的网站移植到Android,并使用Webview向用户显示内容。我的网站中有很多Javascript函数,我想截取它们。我已经看到了 但是,我认为应该有一种更合适的方法,使用Javascript接口:使用Android Webview覆盖当前Javascript函数,javascript,android,interface,webview,Javascript,Android,Interface,Webview,我正在将我的网站移植到Android,并使用Webview向用户显示内容。我的网站中有很多Javascript函数,我想截取它们。我已经看到了 但是,我认为应该有一种更合适的方法,使用Javascript接口: this.webView.addJavascriptInterface(this.webJavascriptInterface, "Android"); 这样,我必须修改我的网站以调用myFunction()和Android.myFunction()。我试图在界面中留下一个空白字符串:
this.webView.addJavascriptInterface(this.webJavascriptInterface, "Android");
这样,我必须修改我的网站以调用myFunction()
和Android.myFunction()
。我试图在界面中留下一个空白字符串:
this.webView.addJavascriptInterface(this.webJavascriptInterface, "");
但结果是,正如我所猜测的,它无法工作。有没有办法覆盖Webview中当前的Javascript函数
// android
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
webView.loadUrl("javascript:function inputClick(val){native.abcd(val);}"); // override js function
}
});
webView.loadUrl("file:///android_asset/test.html");
webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void abcd(int val) {
Log.e(TAG, "#js abcd" + val);
}
}, "native");
<!-- html -->
<input type="button" onclick="inputClick(2)" value="button">
但这个普通的实现在iOS(Object-C)中似乎不起作用,必须编辑HTML页面。
只是将java javascript桥接代码从HTML移动到java。(请参见示例代码中的方法onPageFinished)您可以通过注入一个新的javascript来重新定义旧函数,基本上您可以用它覆盖现有函数 例如,要覆盖
window.print()
函数,我使用
webView.loadUrl("javascript:window.print = function() {Android.printPage();}")
请考虑编辑您的帖子,以添加更多的解释您的代码做什么,为什么它会解决这个问题。一个只包含代码的答案(即使它在工作)通常不会帮助OP理解他们的问题。
webView.loadUrl("javascript:window.print = function() {Android.printPage();}")