javascript - 如何检查 WebView Javascript 接口(interface)是否可用?

标签 javascript java android webview interface

如果 JavaScript 接口(interface)可用/已定义,是否有任何正确的方法来检查 WebView 中的 JavaScript?

我的想法是在接口(interface)中定义一个检查方法,该方法(如果可用)可以被调用并简单地返回一个 true。难道没有合适的“官方”方式来做到这一点吗?因为如果接口(interface)不可用/未定义,它会抛出错误。

我正在使用 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;
   }
}

谢谢解答!

最佳答案

首先您需要检查 InterfaceName 是否实际导出,也就是说 -- 它是否作为 window 对象的属性出现。您可以通过多种方式做到这一点:

if ("InterfaceName" in window) ...

if (window.InterfaceName) ...

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

因为如果你只是尝试调用一个未定义的属性,你会得到一个错误:Uncaught TypeError: window.InterfaceName is not a function

关于javascript - 如何检查 WebView Javascript 接口(interface)是否可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35041785/

相关文章:

javascript - $.each 迭代之间暂停 5 秒

javascript - 防止超链接上的默认操作来运行 AJAX

JavaScript 使用 console.log 获取带有引号的嵌套数组(1 层)并保留数字

javascript - page.Y 返回错误值

java - 是否可以检查函数是否被调用?

android - 插件太旧,请更新到最新版本,或将 ANDROID_DAILY_OVERRIDE 环境变量设置为

android - 如何解决Android项目中的ERROR : Failed to resolve: com. google.firebase :firebase-measurement-connector:11. 6.0?

java - 数据表显示对话框

java - JTree 中的颜色行

android - 如何修复 org.threeten.bp.format.DateTimeParseException?