Как узнать, к какому веб-просмотру добавлен JavascriptInterface? - PullRequest
1 голос
/ 05 января 2012

Чтобы представить java-методы в javascript, я использовал
mWebview.addJavascriptInterface(new JSInterface(this),"Android");

Когда я на самом деле нахожусь в JSInterface, как я могу получить веб-просмотр, к которому был добавлен JavascriptInterface?

Ответы [ 2 ]

2 голосов
/ 05 января 2012

Я предполагаю, что вы все еще имеете дело с 2 веб-обзорами, описанными здесь: Как обрабатывать обратные вызовы в веб-просмотре

Вы не можете определить, к какому веб-интерфейсу подключен интерфейс JavaScript. Не без предварительной подготовки. Некоторые варианты:

  1. Используйте разные имена интерфейсов для каждого веб-просмотра, а затем проверьте, какое из них присутствует, чтобы определить, в каком веб-просмотре вы находитесь.

  2. Используйте тот же интерфейс, но у каждой функции в интерфейсе есть параметр, называемый caller, который имеет номер вызывающего веб-просмотра.

0 голосов
/ 26 апреля 2012

"Вы можете добавить столько интерфейсов, сколько хотите, к 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();");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...