[英]Detect whether a website runs in Android browser or webView of an app
[英]Android WebView - detect whether a JS function is defined
我正在编写一个在 Android 上的 WebView 下运行的 HTML/JS 应用程序。在某些情况下,可能无法加载包含该应用程序的页面,或者可能会加载另一个页面(例如 404 页面或类似页面)。 通常,我需要在应用程序页面上运行一组 JS 函数或采取另一组操作以防应用程序页面未加载。
我试图通过检测适当的 JS 是否可用来检测是否已加载正确的页面,但我似乎无法找到任何同步方式 - 只能通过调用 JS function 并期望通过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 function,并通过 javascript 接口“onLoaded”将其结果返回给 java。
我认为你可以做到,请查看PhoneGap项目,你会找到答案。
PhoneGap 是一个很棒的移动平台免费框架。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.