我有一个包含多个 CordovaWebViews 的 Android 应用程序。(注意:我正在对一个我不太熟悉的应用程序进行维护。)各种 WebView 使用 CordovaWebView 中的 loadUrl 函数相互发送消息,并带有一个字符串“javascript: ('toggleMenu();');” . (toggleMenu() 函数在我的一个
我对 WebView 的布局方式进行了一些更改(添加了另一个包含滑出菜单和主视图的顶级视图),突然这些 loadUrl 调用超时:我得到了恐惧“E/CordovaWebView (2774): CordovaWebView: 超时错误!” 出现在 logcat 中的行。
怎么会发生这种情况,因为我正在加载的 URL 是一个很小的 JavaScript 片段?我应该在哪里查找此错误的原因? 除了通知我调用已正确发送到 Android WebView 实例之外,logcat 并没有太大帮助:
D/NWCPanels(2774): <9956> sendMessage - HEADER; target: main
D/NWCPanels(2774): <9956> sendMessage - script:javascript: ('toggleMenu();');
D/UiTask(2774): <1> run - url: javascript: ('toggleMenu();');
D/WebView(2774): loadUrlImpl: called
好的,电话一直传到 Android 的 WebView。有我的调试语句表明我的代码认为它有效,然后看起来它实际上是在访问 webkit:
D/CordovaLog(2774): - Debug - toggleMenu from header. result: true
D/webcore(2774): CORE loadUrl: called
D/webkit(2774): Firewall not null
D/webkit(2774): euler: isUrlBlocked = false
也许它正在考虑加载我的 URL,因为它没有被阻止?但是,大约 3 秒后:
E/CordovaWebView(2774): CordovaWebView: TIMEOUT ERROR!