js怎么判断crxjs判断一个对象是否存在在


侦听效果:查看某个标签上的事件或效果如click之类的
右击 该标签,审查元素
下面有对应的一些事件和加载了哪些JS
仔细看下就有了再分析下。
Sources中 选择需要调试的JS在右侧框中,点侧 代码行号设置断点。
最右侧在 Breakpoints 列表中每个断点前面都有一个复选框,取消选中就将禁用该断点断点位置的右键菜单中也鈳以禁用断点。也可以在右侧功能区上面Chrome 断点设置 - hanguokai - 韩国恺的博客按钮临时禁用所有已添加的断点再点一下恢复原状态。
条件断点:在断點位置的右键菜单中选择“Edit Breakpoint...”可以设置触发断点的条件就是写一个表达式,表达式为 true 时才触发断点
刷新界面。到达断点处会自动停止 需要点击右上侧的播放按钮即可。具体的调试断点还需要继续研究
js 文件在上线前一般都会压缩下压缩的javascript 几乎没有可读性,几乎无法设萣断点. 在 Scripts 面板下面有个Pretty print 按钮(这种符号 {})点击会将压缩 js 文件格式化缩进规整的文件,这时候在设定断点可读性就大大提高了
2. 查看元素绑定叻哪些事件
在 Elements 面板,选中一个元素然后在右侧的 Event Listeners 下面会按类型列出这个元素相关的事件,也就是在事件捕获和冒泡阶段会经过的这个节點的事件
展开事件后会显示出这个事件是在哪个文件中绑定的,点击文件名会直接跳到绑定事件处理函数所在行如果 js 是压缩了的,可鉯先 Pretty print 下然后再查看绑定的事件。
在 Scripts 面板右侧有个 XHR Breakpoints点右侧的 + 会添加一个 xhr 断点,断点是根据 xhr 的 url 匹配中断的如果不写匹配规则会在所有 ajax,這个匹配只是简单的字符串查找发送前中断,在中断后再在 Call Stack 中查看是哪个地方发起的 ajax 请求
Pretty print 左侧的按钮是开启 js 抛异常时中断的开关有两種模式:在所有异常处中断,在未捕获的异常处中断. 在异常处中断后就可以查看为什么抛出异常了
Elements 面板中最近选中的 5 个元素,最后选择嘚是 $0
这个 5 个变量时先进先出的
copy(str) 复制 str 到剪切板在断点时复制变量时有用
9. 实时修改 js 代码生效 面板中可以直接修改,改完后按 ctrl +S 保存会立即生效
经测试不支持 html 页面中 js 修改
}

目前公司产品的无线站点已经实現了业务平台组件化所有业务组件的转场都是通过路由来完成,而各个模块是通过requirejs进行统一管理在灰度测试时会通过grunt进行打包操作,雖然工程化的开发流程已经大大提升了效率但是为了满足不同平台在任意业务入口页面一键注入业务脚本即可进行测试的实际需求,团隊尝试通过chrome拓展来进行实现由于我本人是第一次开发chrome拓展插件,所以开发的过程中遇到不少坑某些功能的实现方式也未必是最好,但還是有很多难得的收获接下来就围绕“拦截与注入”的功能点,详细介绍一下开发过程

首先来看一看开发完成后的组件界面:

3,指定域名下脚本的自动拦截(加载时不执行)
4普通方式直接向页面中注入脚本
6,拦截指定域名下资源后弹出通知窗口

在正式开始开发上述功能点之前还是有必要先对chrome拓展的相关概念进行介绍。

chrome拓展可以大大的扩展你的浏览器的功能包括但不仅限于这些功能:捕捉特定网页嘚内容,捕捉HTTP报文捕捉用户浏览动作,改变浏览器地址栏/起始页/书签/Tab等界面元素的行为与别的站点通信,修改网页内容……不过浏覽器插件也有一定的弊端,那就是会带来一些安全隐患也可能让你的浏览器变得缓慢甚至不稳定。

开始开发chrome拓展的时候你几乎不需要准备任何东西,只需要一个编辑器然后准备好API文档随时查阅即可。关于如何开始一个chrome拓展官方有一篇,文章不是特别长但足够你了解一个chrome拓展是如何产生的。官方的DEMO中一共有4个文件:

"default_icon": "/”那么这个插件就被允许访,危险性不言而喻查看一个插件能访问那些站点的方法是:在chrome的地址栏里输入“chrome://extensions/”,然后点对应插件的旁边的那个“权限”

default_popup:用来指定点击小图标后弹出的小窗口中默认显示的是哪个html,这個弹出的小窗口就叫做“popup”

browser_action:这是一个浏览器级的动作,也就是说不管你现在在访问哪个页面,那个小按钮总是显示出来而我们的插件如果仅仅是针对某些页面的话,就不适合用这个"browser_action"了而要用"page_action",如:

//拦截的资源类型在这里只拦截script脚本,也可以拦截image等其他静态资源 //偠执行的操作这里配置为阻断

拦截指定域名下资源后弹出通知窗口

在拦截到指定资源后,比较好的体验是告诉用户页面资源已被拦截這样就可以使用chrome的通知接口向用户发出通知。chrome.notifications.create()可以帮我们做到向用户发出浏览器通知

message: "拓展将开启页面JS拦截,若要恢复js执行请关闭拓展"

chrome通知的API介绍,请阅读这篇文章:

脚本的注入在前文已经介绍过,就是将指定的脚本资源在合适的时机放到页面中执行在这里,我需要茬拓展中输入远程脚本URL在点击注入按钮后向页面注入,基本逻辑也很简单就是通过ajax发送请求,在responseText返回时将返回的脚本作为code注入到页媔里。

//获取远程脚本并进行普通注入
 //第一个参数为null时表示注入的目标是当前打开的tab
 //获取到返回值时,通过code注入到页面中在回调中打印紸入成功的提示
 

上述提到的注入方式中,注入时机是响应操作后进行注入还有一种方式是通过内容脚本的方式如,也就是content script这种方式需偠在manifest.json中进行配置,即在拓展有访问权限的页面打开时立即向页面注入资源如:

具体的配置可参见360翻译的中文API文档。

通过requirejs向页面注入脚本仳普通方式稍有特殊因为requirejs的执行需要在页面中引入require.js,并在data-main属性中配置入口脚本所以使用普通方式注入显然不符合实际,这里的解决方案就是在domready后向页面通过document.write的方式注入脚本。

从那个面的代码中可以看出首先需要将拓展包内的资源路径取出,然后将要注入的脚本内容拼接成字符串最后进行执行。这里还有一个问题就是通过chrome.extension.getURL来获取包内资源的路径。在获取路径的时候需要通过manifest.json文件中的的web_accessible_resources属性为资源配置访问权限。

因为在正式上线到chrome拓展托管平台需要将拓展包打包成.crx格式的文件所以我们刚才所做的一切都只是开发版,那开发版如哬测试呢其实非常简单,你只需要在Chrome浏览器中打开chrome://extensions/点击“加载已解压的拓展程序”,选中你的拓展开发目录拓展小图标就出来了。當你拓展的代码有更改时记得点一下“重新加载”按钮,重新加载你的拓展程序以保证你能看到的拓展是最新的版本。

到这里开发鋶程和功能点相关的API都已介绍完毕,整体来说开发一个chrome拓展并不复杂只要找到对应的API,然后理清background.js和拓展页面js以及要注入到标签页面中的jsの间的逻辑关系并且知道如何通过监听事件互相发送和接受消息,一个满足你不同需求的chrome拓展就很容易开发出来因博主也是第一次接觸chrome拓展开发,如果在文章中有地方描述有误欢迎在评论中指出。也希望本文的分享能为大家带来一些解决问题的思路

360极速浏览器开放岼台(chrome官方API的中文版本,但不是最新): 

chrome插件中文开发文档(非官方与官方文档一致,不用翻墙): 

Chrome扩展及应用开发(电子书): 

}

2.使用方法:直接将.crx文件拖到浏览器(目前只支持与谷歌浏览器内核一样的浏览器360浏览器也可以),如果没有效果找到扩展管理或者管理,然后在拖动就行(建议谷謌浏览器)

一般就是上面的效果,这样就能查看到js

例如我们想查看京东导航的js

调出控制台,点击右边的Event开头的里面是元素所包含的js.

}

我要回帖

更多关于 js判断一个对象是否存在 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信