Chrome DevTools Console调试
console
console.log()打印内容的通用方法console.error()打印一条错误信息console.warn()打印一个警告信息 - console.info()打印资讯类说明信息console.time()启动一个以入参作为特定名称的计时器长
console.timeEnd()结束特定的 计时器 并以豪秒打印其从开始到结束所用的时间
复制
先在代码里console.log
然后在控制台上右键点击输出的对象 选择 store as global variable
控制台会输出temp1 或者temp2 temp3
然后在控制台输入copy(temp1) 或者copy(temp2) 回车 会输出undefined 这时已经被复制到粘贴板上了,直接去别的地方粘贴就好了
选择器
$-简单理解就是 document.querySelector 而已$$简单理解就是 document.querySelectorAll 而已。$$('span')[1].getAttribute('name')$$('span')[1].setAttribute('oncontextmenu', "return true")
keys取对象的键名, 返回键名组成的数组values去对象的值, 返回值组成的数组
监听事件
- getEventListeners(document)
- getEventListeners(document).contextmenu
- element.removeEventListener(‘click’, handleClick);
- monitorEvents(object [, events])
- monitorEvents(document.body, ‘mouse’)
- monitorEvents(document, ‘contextmenu’)
- document.removeEventListener(“contextmenu”,getEventListeners(document).contextmenu[0].listener)
- (function () {
var createElement = document.createElement;
document.createElement = function (tag) {
switch (tag) {
case ‘script’:
console.log(‘禁用动态添加脚本,防止广告加载’);
break;
default:
return createElement.apply(this, arguments);
}
}
})();
这里我们可以查询MDN文档https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener
发现addEventListener来自eventtarget这个对象下的原型中,通常来说我们的dom元素等也都是继承自这个对象的原型链
关于这点我们可以测试一下
EventTarget.prototype.addEventListener=function (){console.log(‘我被劫持了’)}
document.querySelector(‘body’).addEventListener(‘123’)
目前很多网页以及组件都会使用addEventListener
其原因在于onxxxx系列的函数相对性能较差,并且addEventListener支持添加多个函数
这时候我们就可以构造一个简单的劫持函数做一个小过滤,来完成addeventlistener的hook操作
1 | let oldadd=EventTarget.prototype.addEventListener |
addEventListener有四个参数,分别为type,listener,options,useCapture
options以及useCapture为可选选项
type为事件监听类型
关于事件我们可以在https://www.runoob.com/jsref/dom-obj-event.html查询到
注意是不带on的
listener是触发函数,当我们传入的事件监听类型被捕获到,我们就会调用这个函数
options以及useCapture为一些选项的参数
options和useCapture都是第三个参数
useCapture为真是捕捉监听器
Sources
Sources面板几乎是Chrome最重要的功能面板之一,debugger断点调试是解决问题的最佳法宝。
首先在代码中加入debugger,打开F12开发工具切换到Sources面板中点击button按钮如图所示:
1 | let btn = document.getElementById("btn"); |
Application
记录网站加载的所有资源信息,包括存储数据(Local Storage、Session Storage、IndexedDB、Web SQL、Cookies)、缓存数据、字体、图片、脚本、样式表等。
Local Storage
只读的 localStorage 属性允许你访问一个 Document 源(origin)的对象 Storage;存储的数据将保存在浏览器会话中。 localStorage 类似 sessionStorage ,但其区别在于:存储在 localStorage 的数据可以长期保留;而当页面会话结束——也就是说,当页面被关闭时,存储在 sessionStorage 的数据会被清除 。
新增
localStorage.setItem(‘id’, ‘999’);
复制代码
读取
let id = localStorage.getItem(‘id’);
console.log(id);// 999
复制代码
移除
// 移除指定项
localStorage.removeItem(‘id’);
// 移除所有
localStorage.clear();