Javascript Android WebView-检测是否定义了JS函数
我正在编写一个HTML/JS应用程序,它在Android上的WebView下运行。在某些情况下,可能无法加载包含应用程序的页面,或者可能会加载另一个页面,例如404页面或类似页面。通常,我需要在应用程序页面上运行一组JS函数,或者在应用程序页面未加载的情况下执行另一组操作 我试图通过检测适当的JS是否可用来检测是否加载了适当的页面,但我似乎找不到任何同步的方法——只能通过调用JS函数并期望通过JavasctiptInterface进行回调。虽然这种方法是可行的,但我想知道是否有更好、更优雅、更可靠的方法来实现这一点 我当然不能通过分析页面的URL来做到这一点——它可能是正确的,但内容错误Javascript Android WebView-检测是否定义了JS函数,javascript,android,webview,Javascript,Android,Webview,我正在编写一个HTML/JS应用程序,它在Android上的WebView下运行。在某些情况下,可能无法加载包含应用程序的页面,或者可能会加载另一个页面,例如404页面或类似页面。通常,我需要在应用程序页面上运行一组JS函数,或者在应用程序页面未加载的情况下执行另一组操作 我试图通过检测适当的JS是否可用来检测是否加载了适当的页面,但我似乎找不到任何同步的方法——只能通过调用JS函数并期望通过JavasctiptInterface进行回调。虽然这种方法是可行的,但我想知道是否有更好、更优雅、更可
有什么想法吗?我想你能做到,请看这个项目,你会找到答案的 PhoneGap是一个非常棒的移动平台免费框架
@JavascriptInterface
public void onLoaded(String result) {
if (result.equals("function")) {
// defined
} else {
// not defined
}
}
private void checkJSFunction() {
loadUrl("javascript:yourJSInterfaceName.onLoaded(typeof yourFunctionName)");
}
更新:
这个代码将检查由JoToPE定义的JS函数,并通过JavaScript接口将其结果返回到java。为什么你认为回调不是优雅和可靠的方式?因为我期望从开发平台提供直接的通信接口而不是调用JavaScript…协议-这是你6-7年前在IE上做的事情。我真的希望Android能提供更直接的工具来做一些像调用JS方法这样琐碎的事情,但到目前为止,我在搜索中运气不好,但我想可能我找错了地方-因此问题就来了。从javascript调用它:。。。看起来真的很黑,但看起来不像回调。为什么它不可靠?因为我不能确定JS回调需要多长时间才能响应。我可能会让用户等待一段时间,直到发生什么事情。我需要一种在不依赖页面完整性的情况下探测页面脚本的方法。我可以这样做:call JS test function->start timer->如果我在计时器结束之前收到回调,那么正确的JS是活动的;如果计时器滴答作响,那么它就不活动了——但这可能是最丑陋的方式。我想知道有更好的办法。。只需检查,该函数存在于JS:javascript:typeof someFunc==函数中。这是由时间决定的代码。毫无疑问,PhoneGap是一个优秀的平台。不幸的是,在我的例子中,HTML应用程序已经开发出来,几乎不可触摸。在任何情况下,JS到本机的通信在这里都不是问题,它是JS的本机通信,而不使用.loadUrl'javascript:。。。这让我很烦。请解释一下这段代码的作用以及它是如何回答这个问题的。此外,它还包含语法错误。