如果 else 语句在 javascript onclick() 中不起作用,当从 android webview 调用

If else statement not working in javascript onclick() when called from android webview?

本文关键字:不起作用 当从 android 调用 webview 语句 else javascript onclick 如果      更新时间:2023-09-26

onClick()函数中,其中包含一个ifelse语句,无法从android webview正常工作。我在下面添加了代码。如果我错过了,请提供您的建议。多谢。

function exampleCall(message) { 
   if(navigator.userAgent.match(/Android/i)) {
      androidexampleCall(message);
   }
   if(navigator.userAgent.match(/iPhone|iPad|iPod/i)){
       iOSexampleCall(message);
   }                            
}

JS调用:

<div onclick="javascript:exampleCall('GameOn');">.... </div>

我想不起作用的调用是androidexampleCall(message).

定义一个界面并将其添加到活动的 Web 视图中,例如:

 Webview wv;
 //... 
 wv.addJavascriptInterface(new myJavaScriptInterface(), "CallToAnAndroidFunction");
 //...
 public class myJavaScriptInterface {
     @JavascriptInterface
     public void androidexampleCall(String message);{
        //code
     }
 }

在你的 Js 代码上,你应该按如下方式进行调用:

 function exampleCall(message) { 
   if(navigator.userAgent.match(/Android/i)) {
     window.CallToAnAndroidFunction.androidexampleCall(message);
   }
   if(navigator.userAgent.match(/iPhone|iPad|iPod/i)){
     iOSexampleCall(message);
   }                            
}

似乎您没有为Web视图启用Javascript:

webview.getSettings().setJavaScriptEnabled(true);

编辑:

使用此 Web 视图测试了您的代码:

webview = (WebView)findViewById(R.id.webView1);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://jonathanalbrieux.com/others/testagent.html");
Button buttonReload = (Button)findViewById(R.id.button1);
buttonReload.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        webview.loadUrl("http://jonathanalbrieux.com/others/testagent.html");
    }
});

而这个页面:

<html>
<head>
</head>
<body>
    <div id="clickable" onclick="test('a')">clickaqd</div>
    <script>
        function test(string){
            if(navigator.userAgent.match(/Android/i)) {
                var divClickable = document.getElementById("clickable");
                divClickable.innerHTML = string;
            }
        }
    </script>
</body>

一切正常,也许您在androidexampleCall功能上遇到了一些问题。

相关文章: