0

onClick()内部に if else ステートメントがある関数の実行中に、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>

4

2 に答える 2

1

機能していない呼び出しは だと思いますandroidexampleCall(message)

次のように、インターフェイスを定義し、アクティビティの webview に追加します。

 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);
   }                            
}
于 2013-10-18T11:09:20.360 に答える
1

Webview で Javascript を有効にしていないようです:

webview.getSettings().setJavaScriptEnabled(true);

編集:

この Webview でコードをテストしました:

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ます。機能に問題がある可能性があります。

于 2013-10-18T12:27:03.733 に答える