2016-01-27 3 views
2

Есть ли подходящий способ проверить JavaScript внутри WebView, если JavaScript-интерфейс доступен/определен?Как проверить, доступен ли интерфейс WebView Javascript?

Моя идея заключалась в том, чтобы определить метод проверки в интерфейсе, который (если доступен) можно вызвать и просто вернуть true. Разве нет надлежащего «официального» способа сделать это? Поскольку, если интерфейс недоступен/не определен, он выдает ошибку.

Я использую Android, поэтому Java-код:

webView.addJavascriptInterface(new WebAppinterface(this),"InterfaceName"); 

@JavascriptInterface 
public void isInterfaceAvailabe(){ 
    return true; 
} 

И в Javascript:

function hasJavaScriptInterface() { 
    if (InterfaceName.isInterfaceAvailable()){ 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

Спасибо за ответы!

ответ

7

Прежде всего, вам необходимо проверить, действительно ли экспортируется InterfaceName, то есть он представляет его как объект на объекте window. Вы можете сделать это несколькими способами:

if ("InterfaceName" in window) ... 

или

if (window.InterfaceName) ... 

или

if (typeof window.InterfaceName === "function") ... 

Потому что, если вы просто попробуйте вызвать не-определенные свойства, вы получите сообщение об ошибке: Uncaught TypeError: window.InterfaceName is not a function

+0

вот что мне нужно, спасибо! – btx

+0

if (window.InterfaceName) работает для меня, это должно быть отмечено как ответ. – RRTW

Смежные вопросы