0

我有一个包含多个 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!
4

2 回答 2

2

请使用它清除 webview catchwebView.Clearcatch()工作正常。我也尝试过,它解决了我的问题。

于 2013-08-05T07:26:27.653 回答
0

事实证明,我在问题中根本没有提到:我使用的内部框架不喜欢我格式化函数的方式。(它会进行字符串操作以找出函数的名称,而执行“var funcName = function(){}”会破坏它。)

没什么可看的,伙计们,继续前进......

于 2013-02-22T23:40:48.910 回答