【问题标题】:UIWebView - Debug javascriptUIWebView - 调试 javascript
【发布时间】:2011-11-22 16:26:19
【问题描述】:

我面临以下问题:我的应用程序必须加载一些网络内容,并且由于某种原因,内容未按应有的方式呈现,(网络内容在移动 safari 上完美运行)。 所以我需要一种方法来通知 UIWebView 中的 javascript 错误。

我阅读了thisanswer,但实际上我无法让它工作:(

有人,已经这样做了,请解释我该怎么做?

另一个问题是:iOS 5.x 中的 UIWebView 集成了nitro引擎?因为有人说是,别人说不是……

提前致谢

【问题讨论】:

  • 你提到的答案不是关于 UIWebView 而是 Mac OS 的 WebView。有一些 JS / JQuery 函数在 UIWebView 上运行不佳(但 Mobile Safari 并没有呻吟) - 对于我们在 DOM 中由 JQuery 进行的示例查询。无法在 UIWebView 中跟踪 JS 错误 - 您需要获取 JS 文件并了解发生了什么。
  • 实际上,如果您更仔细地阅读我链接的链接,尤其是 prcela 的答案,他说该解决方法甚至在 iOS 上也有效。还有另一种在 webview 中调试的方法,启用 webkit 远程调试。所以可能性不止一种……

标签: javascript ios uiwebview


【解决方案1】:

我已经运行了相当多的 Javascript 和一个不可见的 webview。

在 iOS 上调试 Javascript 有点棘手。尽管我没有找到灵丹妙药,但我发现以下内容很有帮助:

  • 没有console.log。我自己实现了它,使用与其他人相同的- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
  • remote debugging in iOS 5.x 的设施。您可以设置断点、检查变量等,但没有分步调试器。 iOS 强加了 10 秒的硬性限制,如果 javascript 调用占用了它的时间,那么它将在没有警告的情况下终止。这使得这个调试桥的用处大大降低。
  • iOS 5.x 存在严重错误。没有堆栈跟踪,没有行号,没有文件名,什么都没有。我经常被'undefined' is not a function 卡住而没有额外的帮助。
  • iOS 4.3 有更好的错误。仍然没有堆栈跟踪,但存在行号和文件名。
  • 有一种方法- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error; 可能会报告Javascript 错误。没有。

我没有尝试过,但在我的清单上:

  • Weinre 看起来很有趣,但对我来说有点沉重。
  • JSConsole 看起来像是赢家,但可能对调试错误没有多大帮助。

【讨论】:

    猜你喜欢
    • 2013-02-27
    • 2015-07-15
    • 2011-09-25
    • 2012-02-11
    • 2011-02-15
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多