js - 关于部分浏览器内置函数console详解(用开发调试的利器)

2023-11-03

原文地址:http://blog.csdn.net/icewizardry/article/details/17265195

Firebug是网页开发的利器,能够极大地提升工作效率。

但是,它不太容易上手。我曾经翻译过一篇《Firebug入门指南》,介绍了一些基本用法。今天,继续介绍它的高级用法。

===================================

Firebug控制台详解

作者:阮一峰
出处:http://www.ruanyifeng.com/blog/2011/03/firebug_console_tutorial.html


控制台(Console)是Firebug的第一个面板,也是最重要的面板,主要作用是显示网页加载过程中产生各类信息。

一、显示信息的命令

Firebug内置一个console对象,提供5种方法,用来显示信息。

最简单的方法是console.log(),可以用来取代alert()或document.write()。比如,在网页脚本中使用console.log("Hello World"),加载时控制台就会自动显示如下内容。

另外,根据信息的不同性质,console对象还有4种显示信息的方法,分别是一般信息console.info()、除错信息console.debug()、警告提示console.warn()、错误提示console.error()。

比如,在网页脚本中插入下面四行:

  console.info("这是info");

  console.debug("这是debug");

  console.warn("这是warn");

  console.error("这是error");

加载时,控制台会显示如下内容。

可以看到,不同性质的信息前面有不同的图标,并且每条信息后面都有超级链接,点击后跳转到网页源码的相应行。

二、占位符

console对象的上面5种方法,都可以使用printf风格的占位符。不过,占位符的种类比较少,只支持字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)四种。

比如,

  console.log("%d年%d月%d日",2011,3,26);

  console.log("圆周率是%f",3.1415926);

%o占位符,可以用来查看一个对象内部情况。比如,有这样一个对象:

  var dog = {} ;

  dog.name = "大毛" ;

  dog.color = "黄色";

然后,对它使用o%占位符。

  console.log("%o",dog);

三、分组显示

如果信息太多,可以分组显示,用到的方法是console.group()和console.groupEnd()。

  console.group("第一组信息");

    console.log("第一组第一条");

    console.log("第一组第二条");

  console.groupEnd();

  console.group("第二组信息");

    console.log("第二组第一条");

    console.log("第二组第二条");

  console.groupEnd();

点击组标题,该组信息会折叠或展开。

四、console.dir()

console.dir()可以显示一个对象所有的属性和方法。

比如,现在为第二节的dog对象,添加一个bark()方法。

  dog.bark = function(){alert("汪汪汪");};

然后,显示该对象的内容,

  console.dir(dog);

五、console.dirxml()

console.dirxml()用来显示网页的某个节点(node)所包含的html/xml代码。

比如,先获取一个表格节点,

  var table = document.getElementById("table1");

然后,显示该节点包含的代码。

  console.dirxml(table);

六、console.assert()

console.assert()用来判断一个表达式或变量是否为真。如果结果为否,则在控制台输出一条相应信息,并且抛出一个异常。

比如,下面两个判断的结果都为否。

  var result = 0;

  console.assert( result );

  var year = 2000;

  console.assert(year == 2011 );

七、console.trace()

console.trace()用来追踪函数的调用轨迹。

比如,有一个加法器函数。

  function add(a,b){

    return a+b;

  }

我想知道这个函数是如何被调用的,在其中加入console.trace()方法就可以了。

  function add(a,b){

    console.trace();

    return a+b;

  }

假定这个函数的调用代码如下:

  var x = add3(1,1);

  function add3(a,b){return add2(a,b);}

  function add2(a,b){return add1(a,b);}

  function add1(a,b){return add(a,b);}

运行后,会显示add()的调用轨迹,从上到下依次为add()、add1()、add2()、add3()。

八、计时功能

console.time()和console.timeEnd(),用来显示代码的运行时间。

  console.time("计时器一");

  for(var i=0;i<1000;i++){

    for(var j=0;j<1000;j++){}

  }

  console.timeEnd("计时器一");

九、性能分析

性能分析(Profiler)就是分析程序各个部分的运行时间,找出瓶颈所在,使用的方法是console.profile()。

假定有一个函数Foo(),里面调用了另外两个函数funcA()和funcB(),其中funcA()调用10次,funcB()调用1次。

  function Foo(){

    for(var i=0;i<10;i++){funcA(1000);}

    funcB(10000);

  }

  function funcA(count){

    for(var i=0;i<count;i++){}

  }

  function funcB(count){

    for(var i=0;i<count;i++){}

  }

然后,就可以分析Foo()的运行性能了。

  console.profile('性能分析器一');

  Foo();

  console.profileEnd();

控制台会显示一张性能分析表,如下图。

标题栏提示,一共运行了12个函数,共耗时2.656毫秒。其中funcA()运行10次,耗时1.391毫秒,最短运行时间0.123毫秒,最长0.284毫秒,平均0.139毫秒;funcB()运行1次,耗时1.229ms毫秒。

除了使用console.profile()方法,firebug还提供了一个"概况"(Profiler)按钮。第一次点击该按钮,"性能分析" 开始,你可以对网页进行某种操作(比如ajax操作),然后第二次点击该按钮,"性能分析"结束,该操作引发的所有运算就会进行性能分析。

十、属性菜单

控制台面板的名称后面,有一个倒三角,点击后会显示属性菜单。

默认情况下,控制台只显示Javascript错误。如果选中Javascript警告、CSS错误、XML错误都送上,则相关的提示信息都会显示。

这里比较有用的是"显示XMLHttpRequests",也就是显示ajax请求。选中以后,网页的所有ajax请求,都会在控制台面板显示出来。

比如,点击一个YUI示例,控制台就会告诉我们,它用ajax方式发出了一个GET请求,http请求和响应的头信息和内容主体,也都可以看到。

http://www.cnblogs.com/see7di/archive/2011/11/21/2257442.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js - 关于部分浏览器内置函数console详解(用开发调试的利器) 的相关文章

  • 无法在地图循环中访问 Axios 调用的值

    我有一个 javascript 对象 其 ID 对应于一组画廊 我使用地图循环遍历它 在每个循环中 我都会进行 axios 调用来获取当前 id 的图库 最后 我需要一个包含所有画廊内容的数组 问题是地图循环完成后我无法访问数据 当我 co
  • 在 javascript 原型事件处理程序中保留“this”引用[重复]

    这个问题在这里已经有答案了 正确的保存方法是什么this存储在对象原型内的事件处理程序中的 javascript 引用 我不想创建像 this 或 that 这样的临时变量 而且我不能使用像 jQuery 这样的框架 我看到很多人谈论使用
  • JavaScript 画布内存问题

    我在用着getImageData putImageData在 HTML5 画布上能够操作图片 我的问题是浏览器似乎从来没有释放任何内存 http jonelf posterous com lite gc men for sent 直到我关闭
  • 图表.js.如何更改“标签”数组的字体样式?

    我从 Chart JS 库中获取了一个图表 截屏 https i stack imgur com DnuRq png var ctx document getElementById myChart var data labels HTML
  • querySelector 搜索直接子级[重复]

    这个问题在这里已经有答案了 我有一些类似 jquery 的函数 function elem return gt someselector elem 问题是我怎样才能做同样的事情querySelector 问题是 gt 选择器中querySe
  • 鼠标移动时画布拖动

    我正在尝试构建一个可以使用鼠标移动拖动的画布 我做了一些我无法理解的错误 因为一开始似乎有效 然后出现了一个增量错误 使画布移动得太快 考虑以下代码 window onload function var canvas document ge
  • 解释一下这个令人困惑的 dojo 教程声明语法

    我正在阅读使用的语法道场的声明 http dojotoolkit org documentation tutorials 1 8 declare 用于班级创建 描述很混乱 The declare function is defined in
  • 无需重定向的 HTML 页面提交

    有没有什么方法可以在不使用ajax的情况下提交html表单而无需从当前页面重定向 你可以设置一个target 为您form 这样您就可以将表单提交到新选项卡 target blank 或一个小的 隐藏的iframe target nameo
  • 如何在单击按钮时清除反应挂钩中的间隔

    我正在用反应钩子构建一个简单的计时器 我有两个按钮启动和重置 当我单击开始按钮时 handleStart 函数工作正常 计时器启动 但我不知道如何在单击重置按钮时重置计时器 这是我的代码 const App gt const timer s
  • 如何使用 github 托管外部 CSS 文件?

    我将 css 上传到 github 然后转到网站上的文件并单击 raw 选项 我尝试将其添加到网页中 但 chrome 给出以下错误 资源解释为样式表 但使用 MIME 类型 text plain 进行传输 https raw github
  • 如何将React JS状态保存到本地存储中

    我不知道如何将 React js 状态存储到本地存储中 import React Component from react import App css import auth createUserProfileDocument from
  • 等待异步 grunt 任务完成

    我收到了 grunt 设置 其中一个新任务应该执行 grunt task run 已经存在的任务 要执行的任务是异步的 新任务应该等待异步任务完成 执行此操作的首选方法是什么 grunt 已经涵盖了这一点 你应该将你的任务声明为异步任务 并
  • 即使我的情况按预期发生变化,Angular ngClass 也不会更新我的课程

    我正在创建的模板中有类似的内容 div class nng 3 div 价值app layout isNavbarFixed等用零或一初始化 并且页面第一次加载时 适当的类被插入到我的div 不过 此后通
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • 为什么 TypeScript 混合了模块和原型模式?

    我正在查看此页面上 TypeScript 生成的 JS 代码 http www typescriptlang org Playground http www typescriptlang org Playground 基本上 要创建一个Gr
  • D3 强制布局,较大的节点聚集在中心

    我一直在修改将用于标签云的强制布局 每个标签都由一个
  • Firebase 身份验证和实时应用程序数据库如何保护自身安全?

    从一般开发的角度来看 我很好奇如何保护在线资源的访问 我们使用以下 Firebase 配置参数初始化 Web 应用程序 apikey authdomain projectid databaseurl messagesenderid 服务器如
  • jQuery:向左滑动和向右滑动

    我见过slideUp and slideDown在 jQuery 中 左右滑动的功能 方式怎么样 您可以使用 jQuery UI 中的附加效果来做到这一点 详情请参阅此处 http docs jquery com UI Effects Sl
  • 加载 Angular 库时,IE9 和 IE10 中出现 Angular JS“SCRIPT5007:预期对象”错误

    我正在开发一个 AngularJS 应用程序 该应用程序应在 Firefox IE 9 和 IE 10 上运行 我使用最新版本的 angularjs 库 现在是 1 3 15 服务器端是在JavaEE平台上用Java编写的 服务器运行在Gl
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att

随机推荐

  • CentOs7 修复 引导启动

    一 修复MBR MBR Master Boot Record主引导记录 硬盘的0柱面 0磁头 1扇区称为主引导扇区 其中446Byte是bootloader 64Byte为Partition table 剩下的2Byte为magic num
  • 配置hadoop各个节点之间免密码登录实践笔记

    前言 最近在搭建Hadoop环境需要设置无密码登陆 所谓无密码登陆其实是指通过证书认证的方式登陆 使用一种被称为 公私钥 认证的方式来进行ssh登录 在linux系统中 ssh是远程登录的默认工具 因为该工具的协议使用了RSA DSA的加密
  • 使用Python,OpenCV缩放照片(忽略宽高比,保持宽高比)

    使用Python OpenCV缩放照片 忽略宽高比 保持宽高比 1 效果图 1 1 保持宽高比效果图 1 2 忽略宽高比效果图 1 3 opencv各插值效果图 2 原理 3 源码 参考 这篇博客将介绍如何使用OpenCV调整图像大小 调整
  • EEPROM的学习和使用方法

    EEPROM的学习和使用方法 https blog csdn net bornpride article details 87894400 一 概述 在实际的应用中 保存在单片机RAM中的数据 掉电后就丢失了 保存在单片机的FLASH中的数
  • 使用 K-means 算法进行客户分类

    本文为 AI 研习社编译的技术博客 原标题 Customer segmentation using Machine Learning K Means Clustering 翻译 吕鑫灿 就2 校对 就2 整理 志豪 原文链接 http ww
  • 快上车!第十七届全国大学生智能汽车竞赛百度创意组来啦

    全国大学生智能汽车竞赛 是教育部倡导的大学生科技A类竞赛 是2021年全国普通高校大学生竞赛榜单内竞赛 中国高等教育学会将其列为含金量最高的大学生竞赛之一 在全国数百所高校的支持下 全国大学生智能汽车竞赛至今已成功举办了十六届 参赛学生总规
  • 安装pytorch_geometric

    前些时候了解了python下的 dgl库来进行图谱的计算 最近看到pytorch geometric 比dgl快很多 于是打起了pytorch geometric的主意 然而pytorch geometric 并没有dgl 安装这么方便 大
  • gcc与glibc关系

    gcc与glibc关系 glibc是什么 以及与gcc的关系 glibc是gnu发布的libc库 也即c运行库 glibc是linux 系统中最底层的api 应用程序开发接口 几乎其它任何的运行库都会倚赖于glibc glibc除了封装li
  • Git & GitHub入门3:修改文件后提交(modify, stage, commit)

    用atom 打开当前目录下的文件 修改这个文件 在其中加一行注释后保存 运行git add Practice BaiduBaike py 表示我们希望将保存修改后的Practice BaiduBaike py文件 现在我们可以使用git c
  • 毕业N年后,请不要像我一样被档案烦死——转自一位已经毕业的学姐

    转 转自一位已经毕业的学姐 今天在QQ空间里看见有一个毕业了很久的学姐写下了下面这段很干货的经历 加上现在大学生确实对毕业生档案问题不够重视和了解 也很迷茫 所以打算做个搬运工 把这种经历转发出来 提前知道毕业了之后档案到底会有什么影响 毕
  • HAProxy的安装及常用配置中文注释

    一 HAProxy的安装 1 Centos安装 yum install haproxy 2 Ubuntu 安装 apt get install haproxy 3 编译安装 1 安装前准备 yum install gcc gcc c gli
  • Linux TCP客户端、服务器编程模型及实例

    Linux TCP客户端 服务器编程模型及实例 服务器模型 1 绑定IPv4的地址 INADDR ANY 和端口号 8888 int listenfd sockfd opt 1 struct sockaddr in server clien
  • php根据类型重定向跳转

    核心代码 elseif REQUEST act print iftaochan next qid intval REQUEST custqid if empty qid sys msg 非法参数 row where row where cu
  • tinystl实现(第二步:TypeTraits.h)

    经过长时间的学习终于可以开始tinystl的仿 chao 写工作了 本文参考了这位大佬的github 坦白讲我只是补充了注释 因为tinystl的代码真的非常经典而我又没什么这种大型项目的经验 所以只能这样做 不过相信能够有助于大家的学习
  • 计算方法——C语言实现——高斯消元法求解线性方程组

    最近在上计算方法这门课 要求是用MATLAB做练习题 但是我觉得C语言也很棒棒啊 题目 高斯消元法是线性方程组的直接解法 可能会造成很大的失真 尤其是下面用的高斯顺序消元法 代码都是上上个星期写的 暂时就不注释了 使用VS2017 代码如下
  • Latex使用笔记

    Latex使用笔记 笔者最近开始使用latex编辑文档 此处记录一下latex的使用过程中一些值得记录的点 Latex安装 latex安装网上教程很多 笔者参考TeX Live2018 latex安装教程安装成功 未安装图形化界面 late
  • python 时间转换 指定字符串时间转时间戳

    指定年月日时分秒的表达方式 time strftime Y m d H M S 字符串转时间戳 tss1 2019 08 27 timeArray time strptime tss1 Y m d 转为时间戳 timeStamp int t
  • 通用文字识别 本地OCR接口 json数据 任意语言 不限次调用 exe服务工具免搭建部署启动即用

    解决没有网络得环境下图片转文字 本地OCR 也可以云端自己搭建服务 稳定 不限调用次数 附送两个百度飞桨得ONNX识别模型 一个简单 一个复杂 在这里插入图片描述 样本识别效果 使用方法 启动本地OCR接口服务 图片文件 gt base64
  • 【一文搞定Svelte】超详细的Svelte保姆级上手教程!

    目录 Svelte框架是什么 Svelte使用 一 项目搭建 1 SvelteKit搭建 2 Vite搭建 二 svelte组件 1 组件构成 2 组件引用 三 语法 1 包裹js表达式 2 on 事件绑定 3 响应 4 逻辑块 5 组件属
  • js - 关于部分浏览器内置函数console详解(用开发调试的利器)

    原文地址 http blog csdn net icewizardry article details 17265195 Firebug是网页开发的利器 能够极大地提升工作效率 但是 它不太容易上手 我曾经翻译过一篇 Firebug入门指南