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

时间:2012-04-09 08:17:00

标签: javascript android webview

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

@JavascriptInterface
public void onLoaded(String result) {
    if (result.equals("function")) {
        // defined
    } else {
       // not defined
    }
}

private void checkJSFunction() {
    loadUrl("javascript:yourJSInterfaceName.onLoaded(typeof yourFunctionName)");
}

<强>更新: 这段代码将检查由#34; typeof&#34;定义的JS函数。并通过javascript接口将其结果返回给java&#34; onLoaded&#34;。