使用Android Webview覆盖当前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()。我试图在界面中留下一个空白字符串:

我正在将我的网站移植到Android,并使用Webview向用户显示内容。我的网站中有很多Javascript函数,我想截取它们。我已经看到了

但是,我认为应该有一种更合适的方法,使用Javascript接口:

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();}")