Android WebView - 检测是否定义了 JS 函数

Android WebView - detect whether a JS function is defined

本文关键字:JS 函数 定义 是否 WebView 检测 Android      更新时间:2023-09-26

我正在编写一个在Android上的WebView下运行的HTML/JS应用程序。在某些情况下,可能无法加载包含应用程序的页面,或者可能会加载其他页面(例如 404 页面或类似页面)。通常,我需要在应用程序页面上运行一组JS函数,或者在应用程序页面未加载的情况下执行另一组操作。

我正在尝试通过检测适当的 JS 是否可用来检测是否已加载正确的页面,但我似乎找不到任何同步执行此操作的方法 - 只能通过调用 JS 函数并期望通过 JavasctiptInterface 进行回调。虽然这种方法是可行的,但我想知道是否有更好、更优雅和可靠的方法来实现这一目标。

我当然不能通过分析页面的 URL 来做到这一点 - 它可能是正确的,但内容错误。

有什么想法吗?

@JavascriptInterface
public void onLoaded(String result) {
    if (result.equals("function")) {
        // defined
    } else {
       // not defined
    }
}
private void checkJSFunction() {
    loadUrl("javascript:yourJSInterfaceName.onLoaded(typeof yourFunctionName)");
}

更新:这段代码将检查由"typeof"定义的JS函数,并通过javascript接口"onLoaded"将其结果返回给Java。

我想

你可以做到,请看PhoneGap项目,你会找到你的答案。

PhoneGap是一个很棒的移动平台免费框架。