我有一个包含多个CordovaWebViews的Android应用程序。 (注意:我正在对我很熟悉的应用程序进行维护。)各种WebView使用CordovaWebView中的loadUrl函数向对方发送消息,其中包含“javascript:('toggleMenu();'字符串);“即可。 (toggleMenu()函数位于我的一个
中我对WebViews的布局方式进行了一些更改(添加了另一个同时包含滑出菜单和主视图的顶级视图),突然这些loadUrl调用超时:我得到了恐惧“ E / CordovaWebView(2774):CordovaWebView:TIMEOUT ERROR!“线出现在logcat中。
如何发生这种情况,因为我正在加载的网址是一个微小的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
也许是在考虑加载我的网址,因为它没有被阻止?但是,大约3秒钟后:
E/CordovaWebView(2774): CordovaWebView: TIMEOUT ERROR!
答案 0 :(得分:2)
请使用webView.Clearcatch()
清除webview catch它运行正常。我试过了,它解决了我的问题。
答案 1 :(得分:0)
事实证明这是我在问题中没有提到的东西:我使用的内部框架不像我格式化我的功能的方式。 (它使用字符串操作来计算函数的名称,并且执行“var funcName = function(){}”会破坏它。)
没有什么可以看到这里的人,继续前进......