firebreath 在谷歌和火狐浏览器下的调试 以及打包
在寻找插件开发资料的过程中找到了一个开发浏览器插件的开源项目——firebreath
firebreath的安装以及测试我就不再叙述了,可以参考大神的文章 。 http://www.blogjava.net/xiaomage234/archive/2012/08/28/386428.html
下面我主要介绍一下调试和打包。
火狐下的调试:
这也是楼主主推荐的调试方法。firebreath配合火狐的调试简直可以说是浑然天成。如果让火狐可以调试firebreath的代码的话,需要对火狐浏览器进行如下的设置。
- 打开firefox浏览器,在地址栏输入 “about:config”。在搜索框中输入“plugins”,选择dom.ipc.plugins.enabled 设为false; (双击即可切换)
设置环境变量MOZ_CRASHREPORTER_DISABLE = 1 (如果没有的话,新增一个环境变量即可)
- 在代码需要调试的地方打上断点。点击 VS菜单栏的调试=>附加到进程。选择需要调试的页面。注意:进程一定是 firefox.exe,标题为测试页面的title。选择完即可进入调试状态,点击页面js的方法,触发firebreath中的方法,就会停止在断点处。结果如下图所示:

谷歌浏览器下的调试:
大多数情况下使用火狐浏览器就可以完成工作,但是有时候不知道什么情况,同样的代码在火狐下运行的很正常,但是一到谷歌下就出错。如寻找插件的位置。火狐下插件的dll大小写和生成的大小写是一致的,而谷歌却画蛇添足版的全部转化成了小写,如下图所示,同一个插件,打印出来的插件路径却不一样,此时在程序中对这段字符进行操作时就会出现错误。

考虑到国内大多数用户被360所毒害,而360使用的真是谷歌的内核,所以不得不考虑在谷歌下的各种问题。下面介绍在谷歌浏览器下调试的步奏。
- 先把打开这的谷歌浏览器全部关掉,然后用cmd进入谷歌浏览器的安装目录,如果机器上安装了git的话,可以直接手动进入谷歌浏览器的安装目录。右键 Gir Bash Here,即可快速进入当前目录的cmd模式。然后在cmd中输入 chrome.exe -plugin-startup-dialog 按下回车,chrome就会自动,此刻chrome就会进入 插件启动的状态,如下所示

- 接在在用命令行打开的chrome中,输入测试地址。就会弹出pid,如下图:

记住此pid。
- 接下来就和火狐的调试一样了,在vs中 调试=》附加到进程。选择 pid为在谷歌浏览器弹出的 pid的值的那个进程。确定后即可调试谷歌浏览器。
打包:firebreath的打包使用的是 Vix打包工具,只要到CodePlex上下载Vix开发包。然后再一次进入 firebreath根目录。重新运行一下 Prep2013.cmd firebreath会自动检测系统是否安装 Vix,如果暗转的话,就会在Project文件夹下对应的 插件目录下 生成 安装 工程。只要编译此安装工程即可 生成安装包。安装工程如下图所示:

所有的配置安装过程都在 Sources下的IDCardReaderInstaller.wxs文件,如果我们需要配置额外的 dll在安装包中的话,需要手动添加此dll进去,比如我需要把身份证读卡器的公用dll包含进去。那么就需要进行如下的配置
<Directory Id="PluginNameDir" Name="${FBSTRING_PluginName}">
<!--<Component Id="PluginNameDirComp" Guid="*">
<RemoveFolder Id="RemovePluginNameDir" On="uninstall" />
<RegistryValue
Root="HKCU"
Key="SOFTWARE\${COMPANY_NAME}\${PLUGIN_NAME}"
Name="Uninstall"
Type="string"
Value="${FBSTRING_PLUGIN_VERSION}"
KeyPath="yes" />
</Component>
<Directory Id="INSTALLDIR" Name="${FBSTRING_PLUGIN_VERSION}">-->
<Component Id="InstallDirComp" Guid="*">
<RemoveFolder Id="RemoveInstallDir" On="uninstall" />
<RegistryValue
Root="HKCU"
Key="SOFTWARE\${COMPANY_NAME}\${PLUGIN_NAME}\${FBSTRING_PLUGIN_VERSION}"
Name="Uninstall"
Type="string"
Value="${FBSTRING_PLUGIN_VERSION}"
KeyPath="yes" />
</Component>
<Component Id="UniqueComponentId" Guid="07538E54-1C3F-4E8F-AC7E-270660B1E4D1">
<File Id="uniqueFileId" Source="F:\FireBreath-IdCard\build\bin\IDCardReader\Release\sdtapi.dll" />
<File Id="uniqueFileId" Source="F:\FireBreath-IdCard\build\bin\IDCardReader\Release\mwrf32.dll" />
</Component>
<!--</Directory>-->
</Directory>
这样就会把sdtapi.dll和mwrf32.dll 包含到安装目录下。其它的节点的意思,可以到vix的官网上去查看各自表示的意义。
firebreath 在谷歌和火狐浏览器下的调试 以及打包的更多相关文章
- 谷歌、火狐浏览器下实现JS跨域iframe高度自适应的完美解决方法,跨域调用JS不再是难题!
谷歌.火狐浏览器下实现JS跨域iframe高度自适应的解决方法 导读:今天开发的时候遇到个iframe自适应高度的问题,相信大家对这个不陌生,但是一般我们都是在同一个项目使用iframe嵌套页面,这个 ...
- jQuery uploadify在谷歌和火狐浏览器下无法上传
原因: 由于jQuery uploadify是借助flash来实现上传的,每一次向后台发送数据流请求时,ie会自动把本地cookie存储捆绑在一起发送给服务器.但firefox.chrome不会这样做 ...
- innerText在谷歌、火狐浏览器下的使用
使用innerHTML.replace(/<.+?>/gim,'')代替innerText,简单正则替换一下
- 解决文件上传插件Uploadify在火狐浏览器下,Session丢失的问题
因为在火狐浏览器下Flash发送的请求不会带有cookie,所以导致后台的session失效. 解决的方法就是手动传递SessionID到后台. $("#fileresultfiles&qu ...
- laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的问题
遇到的问题: laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的问题(safari下也有同样问题); 解决办法: 给laydate绑定id; 解决前代码: <input ...
- 火狐浏览器下点击a标签时出现虚线的解决方案
1.兼容性问题 火狐浏览器下点击a标签时出现虚线 2.解决方案 a:focus { outline: none;}
- 关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态
关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态 由于火狐浏览器没有安装 Adobe Flash Player 19 NPAPI这个插件 安装好了之后就可以直接运行了
- 火狐浏览器下使用jquery修改img的src
onUploadComplete': function (file, data) { //$("#submit").removeAttr("disabled") ...
- 谷歌、火狐浏览器 缩放为80% 时,margin值才正确
声明:小白的笔记,欢迎大神指点.联系QQ:1522025433. 在网页布局中,通过 谷歌浏览器或火狐浏览器 预览时,发现我们定义的盒模型width,height,margin,padding 值都是 ...
随机推荐
- CSS实用的代码段
摘抄的一些代码还有自己总结的常用的代码~ 1>浏览器样式统一 *{ margin:0px; padding:0px; } 浏览器样式统一 2>清除浮动的方法 3>跨浏览器设置透明度 ...
- STL容器迭代器失效分析
连续内存序列容器(vector, string, deque) 对于连续内存序列STL容器,例如vector,string,deque,删除当前iterator会使得后面所有的iterator都失效, ...
- oracle 游标示例
declare iCount int:=0; sPath nvarchar2(200); tdzsh nvarchar2(50);begin for x in (select c.imgpath fr ...
- 021ARM处理器工作模式
1.User模式:usr,普通应用程序运行的模式: 2.FIQ模式:fiq,快速中断模式,当一个程序正在运行时,突然产生一个中断,而且这种中断属于快速中断,那么将进入快速中断模式下运行: 3.IRQ模 ...
- Nginx 日志按天分割
#nginx日志切割脚本 #!/bin/bash #设置日志文件存放目录 logs_path="/home/www.xxx.com/wwwlogs/" #设置pid文件 pid_p ...
- 九、在动作类中访问ServletAPI
九.在动作类中访问ServletAPI .方式一:(简单,推荐使用)ServletActionContext public String execute() throws Exception { ...
- css style与class之间的区别,cssclass
问题描述: 网页点击[导出]按钮后,将页面table内容另存成excel文件,却发现无法保存表格样式 分析过程: 1.table表格用class,而不是style.导出时并没有导出class定义 ...
- C#局域网桌面共享软件制作(三)
到周末了,继续做这个桌面共享软件,下面是前两篇的链接, 链接 C#局域网桌面共享软件制作(一) 链接 C#局域网桌面共享软件制作(二) 通过对图片进行压缩以后,每张图片大小38K左右(win7/102 ...
- Vue.js学习 Item11 – 组件与组件间的通信
什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有 ...
- js构造函数,索引数组和属性的属性
本文主要介绍和小结js的构造函数,关联数组的实现方式和使用,及不可变对象和它的实现方式及他们使用过程中要注意的点 <script> function p(){ var len=argume ...