转自:http://www.tuicool.com/articles/ZBFnUbz

使用safari对webview进行调试

在web开发的过程中,抓包、调试页面样式、查看请求头是很常用的技巧。其实在iOS开发中,这些技巧也能用(无论是模拟器还是真机),不过我们需要用到mac自带的浏览器Safari。所以,本文将讲解如何使用Safari对iOS程序中的webview进行调试。

正文:

1. 打开模拟器(真机)的开发者模式

【设置】->【Safari】->【高级】->【Web检查器】打开

2. 打开Mac上Safari的开发者模式

【Safari】->【偏好设置】->【高级】->【在菜单栏中显示“开发”菜单】勾选

3. 写一个webview并加载一个网页

#import "ViewController.h"
@interfaceViewController () @property (strong, nonatomic) UIWebView *webView; @end @implementation ViewController - (void)viewDidLoad { [superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib. _webView = [[UIWebViewalloc] initWithFrame:self.view.bounds];
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];
[self.view addSubview:_webView];
} @end

4. 在模拟器(真机)中打开webview应用,并打开Safari查看网络信息

【开发】->【iOS Simulator】->【正在调试的网站】

注意:必须要webview在加载网页时,打开Safari才可以看到调试模式。

在弹出的调试窗口中,可以看到当前正在加载网页的各种信息,包括源码、请求头、图片、加载的资源与脚本、控制台输出等。并且它和web前端的调试方式相同,你可以直接修改网页的CSS样式,对网页布局等进行修改,而不用重新运行整个App。

5. 修改web样式

将光标选中到要修改的样式,进行修改后,可以直接在模拟器中看到修改后的效果。

当然,webview的调试技巧还有很多,比如 Charles 工具等。感兴趣的小伙伴可以多研究下。

使用Chrome DevTool调试iOS设备的webView简介(http://www.jianshu.com/p/19c18c924f91)

之前调试iOS设备的webView都只能使用Safari web inspector(可以google搜索safari ios debug)。但是Safari的inspector用起来实在没有Chrome的DevTool顺手。
今天从v2ex的这个帖子里看到了iOS WebKit Debug Proxy,终于解决了这个问题。

先放张使用效果图

chrome_ios_debug.png

使用

iOS WebKit Debug Proxy的原理是在本地起了一个代理做WebInspector到WebKit远程调试的协议转发。安装使用的过程很简单,但是因为墙的存在所以要做一些设置以方便使用。本文只介绍在Mac OS X下的安装设置。

安装

  • 使用brew直接安装

    brew install ios-webkit-debug-proxy

连接设备

  • 模拟器需要在使用proxy之前启动
  • 真机只需要USB连接好即可

启动proxy

  • 在terminal中执行

    ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html

-f 参数直接指定使用chrome的devtools作前端。否则需要翻墙后才能调试设备。

在Chrome中打开页面

  • 在chrome中打开 localhost:9221 ,可以看到当前已连接的设备列表。

    如果此时看不到模拟器,请检查/etc/hosts文件是否有一行::1 localhost,以确保WebInspector监听ipv4协议

设备列表
  • 点击设备后可以打开新的设备页面

    默认每个设备的端口号+1,9222/9223/...

  • 可能会见到提示说

    Note: Your browser may block1,2
    the above links with JavaScript console error:
    Not allowed to load local resource: chrome-devtools://...
    To open a link: right-click on the link (control-click on Mac), 'Copy Link Address', and paste it into address bar.

按提示复制右键复制链接地址在地址栏中打开就可以愉快的使用chrome的dev tool来调试webView啦。

文/xi_lin(简书作者)
原文链接:http://www.jianshu.com/p/19c18c924f91
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

iOS 开发之使用safari对webview进行调试的更多相关文章

  1. 【iOS】使用safari对webview进行调试

    [iOS]使用safari对webview进行调试 在web开发的过程中,抓包.调试页面样式.查看请求头是很常用的技巧.其实在iOS开发中,这些技巧也能用(无论是模拟器还是真机),不过我们需要用到ma ...

  2. 使用safari对webview进行调试

    在web开发的过程中,抓包.调试页面样式.查看请求头是很常用的技巧.其实在iOS开发中,这些技巧也能用(无论是模拟器还是真机),不过我们需要用到mac自带的浏览器Safari.所以,本文将讲解如何使用 ...

  3. IOS开发中一些受用的编码和调试方法积累

    1.## 与 @# 在宏里面该怎样使用 ##的使用, 首先我们添加一个宏 #define LRWeakSelf(type) __weak typeof(type) weak##type = type; ...

  4. iOS开发调试概览

    概述 我们都知道Xcode默认的调试器是LLDB(在此之前使用的是GDB),但是关于LLDB的debug技巧并非所有人都比较清楚,可能所有人都知道p或者po命令打印一些变量.但是实际的情况时这些还远远 ...

  5. iOS开发(1) WebView和HTML 显示

    iOS 7 已经release了.现在学习iOS开发还是非常热门的.到处也有些团队在寻找iOS开发的人才. 那么,iOS开发.....省略了1万字.... HTML5 +CSS3+JS...再省略1万 ...

  6. 03.WebView演练-iOS开发Demo(示例程序)源代码

    技术博客http://www.cnblogs.com/ChenYilong/   新浪微博http://weibo.com/luohanchenyilong   //转载请注明出处--本文永久链接:h ...

  7. iOS开发系列--网络开发

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  8. ios开发中的小技巧

    在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...

  9. IOS开发基础知识--碎片11

    1:AFNetwork判断网络状态 #import “AFNetworkActivityIndicatorManager.h" - (BOOL)application:(UIApplicat ...

随机推荐

  1. 接口性能测试--JMeter

    1.JMeter Java Sampler介绍 setupTest做些初始化的工作,每个线程只执行一次 teardownTest做些清理工作,每个线程只执行一次 1.JMeter Java Sampl ...

  2. [转]spring_bean的属性

    1.parent 表示继承的父类 如果有很多继承同一个父类的BEAN 那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入的属性 bean定义继承父bean定义,它可以覆盖父bean的一些值,或 ...

  3. JQ 数字验证

    $.fn.extend({ checknum: function (min, max, accurate) { if ($(this).val() != "") { $(this) ...

  4. ajaxfileupload 传参数

    引用:http://www.cnblogs.com/lyeo/archive/2012/05/11/2496261.html 直接上代码: var data = { name: 'my name', ...

  5. 《zw版·Halcon入门教程与内置demo》

    <zw版·Halcon入门教程与内置demo> halcon系统的中文教程很不好找,而且大部分是v10以前的版本. 例如,QQ群: 247994767(Delphi与halcon), 共享 ...

  6. failed to lazily initialize a collection of role:XXX, no sessi

    系统 框架  springMVC+hibernate 这种情况 由于 hibernate 的 懒汉机制,和 Spring 事务机制(不确定)造成的 由于 spring 配置的时候,在service 层 ...

  7. Java线程间通信方式剖析——Java进阶(四)

    原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...

  8. Hdu 4681 2013 Multi-University Training Contest 8 String

    带跨越式的LCS,同样是在朴素的LCS上加入一种跨越一段的转移,这样我们要预处理出跨越一段给定串的转移函数. 这个题同样可以正反两边LCS做 呆马: #include <iostream> ...

  9. Python基础操作-函数

    本节内容 1. 函数基本语法及特性2. 参数与局部变量3. 返回值4.递归5.高阶函数 1.函数基本语法及特性函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具 ...

  10. Java数据结构与算法之---求两个数的最大公约数(欧几里得算法)

    一个简单的小算法来获取两个数的最大公约数, public class Test { public static void main(String[] args) { long result = gcd ...