设为首页收藏本站

融智技术学院

 找回密码
 注册

QQ登录

只需一步,快速开始

iOS 7开发快速入门
搜索
查看: 739|回复: 0

【iPhone每日一问】在iOS的UIWebView中如何使用Javascript的console.log()?

[复制链接]
MrLi 发表于 2014-4-5 15:00:13 | 显示全部楼层 |阅读模式

问:
当我使用一个UIWebView写一个iPhone/iPad应用程序时,控制台不可见。这个杰出的回答显示了如何捕获错误,但是我想要使用console.log()。
答:
我有一个解决方案使用javascript,实现程序调试控制台,这有点粗略,但它可以运行。
首先,我们采用javascript定义了console.log()函数,打开并立即使用ios-log的url删除iframe。代码如下:
  1. // Debug
  2. console = new Object();
  3. console.log = function(log) {
  4.   var iframe = document.createElement("IFRAME");
  5.   iframe.setAttribute("src", "ios-log:#iOS#" + log);
  6.   document.documentElement.appendChild(iframe);
  7.   iframe.parentNode.removeChild(iframe);
  8.   iframe = null;   
  9. }
  10. console.debug = console.log;
  11. console.info = console.log;
  12. console.warn = console.log;
  13. console.error = console.log;
复制代码
现在,我们必须在iOS应用程序中使用shouldStartLoadWithRequest函数捕获这个在UIWebViewDelegate中的URL。
  1. - (BOOL)webView:(UIWebView *)webView2
  2. shouldStartLoadWithRequest:(NSURLRequest *)request
  3. navigationType:(UIWebViewNavigationType)navigationType {
  4.     NSString *requestString = [[[request URL] absoluteString] stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
  5.     //NSLog(requestString);
  6.     if ([requestString hasPrefix:@"ios-log:"]) {
  7.         NSString* logString = [[requestString componentsSeparatedByString:@":#iOS#"] objectAtIndex:1];
  8.                                NSLog(@"UIWebView console: %@", logString);
  9.         return NO;
  10.     }
  11.     return YES;
  12. }
复制代码

温馨提示:您的支持与理解,是我们工作最大的动力。如果您是从网上购买的图书,请在对应的网店,给予本书一个好评,我们将衷心感谢!!!
以下是《突破,Objective-C开发速学手册》对应的购书评论地址:
当当网:http://product.dangdang.com/23301950.html
亚马逊:http://www.amazon.cn/dp/B00DY89JIY
京东网:http://item.jd.com/11280184.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

新突破电商

小黑屋|手机版|Archiver|融智技术学院 ( 京ICP备09018999号  

GMT+8, 2019-1-22 00:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表