【发布时间】:2012-04-09 08:17:00
【问题描述】:
我正在编写一个在 Android 上的 WebView 下运行的 HTML/JS 应用程序。在某些情况下,可能无法加载包含该应用程序的页面,或者可能是另一个页面(例如 404 页面或类似页面)。一般来说,我需要在应用程序页面上运行一组 JS 函数,或者在应用程序页面没有加载的情况下执行另一组操作。
我试图通过检测适当的 JS 是否可用来检测是否已加载正确的页面,但我似乎找不到任何同步的方法 - 只能通过调用 JS 函数并期望通过回调JavasctiptInterface。虽然这种方法是可行的,但我想知道是否有更好、更优雅、更可靠的方法来实现这一点。
我当然不能通过分析页面的 URL 来做到这一点 - 它可能是正确的,但内容有误。
有什么想法吗?
【问题讨论】:
-
为什么你认为回调不是“优雅可靠的方式”?
-
'因为我希望开发平台能够提供直接通信接口,而不是调用
javascript:...协议——这就是你 6-7 年前在 IE 上所做的事情。老实说,我希望 Android 能够提供更直接的工具来做一些像调用 JS 方法这样微不足道的事情,但到目前为止,我的搜索一直很不走运,但我想也许我找错了地方——因此是这个问题。 -
从 "javascript:..." 调用它看起来很 hacky,但它看起来不像回调。为什么它不可靠?
-
因为我无法确定 JS 回调需要多长时间才能响应。我可能会让用户挂起一段时间,直到发生某些事情。我需要一种方法来探测页面脚本而不依赖于它们的完整性。我可以这样做:调用 JS 测试函数 -> 启动计时器 -> 如果我在计时器结束之前得到回调,则正确的 JS 是活动的 |如果计时器滴答作响,那么它不是 - 但 this 可能是最丑陋的做事方式。我想知道有没有更好的方法。
-
Erm.. 只需检查一下,JS 中存在该函数:
javascript:typeof someFunc == "function"。这是时间确定的代码。
标签: javascript android webview