は、私はJavascriptInterfaceが追加されたのWebViewを取得する方法を、私はmWebview.addJavascriptInterface(new JSInterface(this),"Android");
JavascriptInterfaceが追加されたwebviewを取得するにはどうすればいいですか?
私はJSInterfaceで実際に午前
を使用し、JavaScriptにJavaのメソッドを公開するには?
は、私はJavascriptInterfaceが追加されたのWebViewを取得する方法を、私はmWebview.addJavascriptInterface(new JSInterface(this),"Android");
JavascriptInterfaceが追加されたwebviewを取得するにはどうすればいいですか?
私はJSInterfaceで実際に午前
を使用し、JavaScriptにJavaのメソッドを公開するには?
私はあなたがまだここで説明する2 webviewsを扱っていると仮定します。 How to handle callbacks in webview
あなたはJavaScriptのインターフェイスが接続されているWebViewのかを判断することはできません。いくつかの準備を前もって行うことなく。いくつかのオプションがあります:
は、それぞれのWebViewに異なるインタフェース名を使用して、1はあなたがしているどのWebViewを決定するために存在しているテスト
同じインターフェイスを使用しますが、各機能を持っています。呼び出し元のwebviewの番号を持つcallerというパラメータが含まれています。
「あなたはWebView
したいとあなたは(addJavaScriptInterface
に例えば二paramは異なっていなければならない)限り、彼らは別の名前を持っている限り多くのインターフェイスを追加することができます。」
私はそうは思わなかった。私は2番目のインターフェイスを呼び出そうとします。
webView = (WebView) this.findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new MyWebViewClient());
webView.setWebChromeClient(new MyWebChromeClient());
webView.loadUrl("http://www.google.com");
webView.addJavascriptInterface(innerJavascript, "innerJS");
webView.loadUrl("javascript:window.innerJS.description();");
webView.addJavascriptInterface(innerJavascript2, "innerJS2");
webView.loadUrl("javascript:window.innerJS2.description();");
が、私は単一のWebViewに一つのインタフェースよりも多くを追加することができます。私は打撃として
WebChromeClient
そのソースコードに言われますか? JSInterfaceに渡されたコンテキスト(アクティビティのスーパークラス)は、webviewのIDが必要なので、おそらくwebviewを取得するのに十分ではないことがわかりました。 – sammiwei
名前が異なる限り、WebViewに必要な数のインターフェイスを追加できます(たとえば、addJavaScriptInterfaceの2番目のパラメータは異なる必要があります)。 – Theo
よろしいですか。ありがとう!前にも触れましたが、私はコールバックにwebview.loadUrl( "javascript:")を使用できます。その例はありますか? – sammiwei