要将java方法暴露给javascript,我使用了mWebview.addJavascriptInterface(new JSInterface(this),"Android");
当我实际上在JSInterface中时,我如何获得添加JavascriptInterface的webview?
答案 0 :(得分:2)
我假设你还在处理这里描述的2个网页浏览: How to handle callbacks in webview
您无法确定JavaScript界面附加到哪个webview。并非没有事先做好准备。一些选项是:
为每个网页浏览使用不同的界面名称,然后测试哪个存在以确定您所在的网页浏览。
使用相同的界面,但界面中的每个功能都包含一个名为caller的参数,该参数具有调用webview的编号。
答案 1 :(得分:0)
“您可以根据需要为WebView
添加任意数量的界面,只要它们具有不同的名称(例如addJavaScriptInterface
的第二个参数必须不同)。”
我不这么认为。当我尝试调用第二个界面时。我在WebChromeClient
被告知
"TypeError: Result of expression 'window.innerJS2' [undefined] is not an object."``
源代码为打击:
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();");