如何检索添加JavascriptInterface的webview?

时间:2012-01-05 18:52:52

标签: android webview

要将java方法暴露给javascript,我使用了mWebview.addJavascriptInterface(new JSInterface(this),"Android");

当我实际上在JSInterface中时,我如何获得添加JavascriptInterface的webview?

2 个答案:

答案 0 :(得分:2)

我假设你还在处理这里描述的2个网页浏览: How to handle callbacks in webview

您无法确定JavaScript界面​​附加到哪个webview。并非没有事先做好准备。一些选项是:

  1. 为每个网页浏览使用不同的界面名称,然后测试哪个存在以确定您所在的网页浏览。

  2. 使用相同的界面,但界面中的每个功能都包含一个名为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();");