如何检查WebView JavaScript接口是否可用?

4

在 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;
   }
}

感谢回答!
1个回答

11

首先,您需要检查InterfaceName是否被导出,也就是说,它是否作为属性存在于window对象上。您可以通过以下几种方式进行检查:

首先需检查InterfaceName是否真的被导出,即在window对象中是否作为一个属性存在。您可以采用以下几种方法进行检查:

if ("InterfaceName" in window) ...
或者
if (window.InterfaceName) ...
或者
if (typeof window.InterfaceName === "function") ...
因为如果你尝试调用未定义的属性,你会收到一个错误:Uncaught TypeError: window.InterfaceName is not a function

2
如果(window.InterfaceName) 对我有效,那应该标记为答案。 - RRTW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接