在寻找插件开发资料的过程中找到了一个开发浏览器插件的开源项目——firebreath

firebreath的安装以及测试我就不再叙述了,可以参考大神的文章 。 http://www.blogjava.net/xiaomage234/archive/2012/08/28/386428.html

下面我主要介绍一下调试和打包。

火狐下的调试:

  这也是楼主主推荐的调试方法。firebreath配合火狐的调试简直可以说是浑然天成。如果让火狐可以调试firebreath的代码的话,需要对火狐浏览器进行如下的设置。

  1. 打开firefox浏览器,在地址栏输入 “about:config”。在搜索框中输入“plugins”,选择dom.ipc.plugins.enabled 设为false; (双击即可切换)
  2. 设置环境变量MOZ_CRASHREPORTER_DISABLE = 1 (如果没有的话,新增一个环境变量即可)

  3. 在代码需要调试的地方打上断点。点击 VS菜单栏的调试=>附加到进程。选择需要调试的页面。注意:进程一定是 firefox.exe,标题为测试页面的title。选择完即可进入调试状态,点击页面js的方法,触发firebreath中的方法,就会停止在断点处。结果如下图所示:

谷歌浏览器下的调试:

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

考虑到国内大多数用户被360所毒害,而360使用的真是谷歌的内核,所以不得不考虑在谷歌下的各种问题。下面介绍在谷歌浏览器下调试的步奏。

  1. 先把打开这的谷歌浏览器全部关掉,然后用cmd进入谷歌浏览器的安装目录,如果机器上安装了git的话,可以直接手动进入谷歌浏览器的安装目录。右键 Gir Bash Here,即可快速进入当前目录的cmd模式。然后在cmd中输入 chrome.exe -plugin-startup-dialog 按下回车,chrome就会自动,此刻chrome就会进入 插件启动的状态,如下所示

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

记住此pid。

  1. 接下来就和火狐的调试一样了,在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 在谷歌和火狐浏览器下的调试 以及打包的更多相关文章

  1. 谷歌、火狐浏览器下实现JS跨域iframe高度自适应的完美解决方法,跨域调用JS不再是难题!

    谷歌.火狐浏览器下实现JS跨域iframe高度自适应的解决方法 导读:今天开发的时候遇到个iframe自适应高度的问题,相信大家对这个不陌生,但是一般我们都是在同一个项目使用iframe嵌套页面,这个 ...

  2. jQuery uploadify在谷歌和火狐浏览器下无法上传

    原因: 由于jQuery uploadify是借助flash来实现上传的,每一次向后台发送数据流请求时,ie会自动把本地cookie存储捆绑在一起发送给服务器.但firefox.chrome不会这样做 ...

  3. innerText在谷歌、火狐浏览器下的使用

    使用innerHTML.replace(/<.+?>/gim,'')代替innerText,简单正则替换一下

  4. 解决文件上传插件Uploadify在火狐浏览器下,Session丢失的问题

    因为在火狐浏览器下Flash发送的请求不会带有cookie,所以导致后台的session失效. 解决的方法就是手动传递SessionID到后台. $("#fileresultfiles&qu ...

  5. laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的问题

    遇到的问题: laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的问题(safari下也有同样问题); 解决办法: 给laydate绑定id; 解决前代码: <input ...

  6. 火狐浏览器下点击a标签时出现虚线的解决方案

    1.兼容性问题 火狐浏览器下点击a标签时出现虚线 2.解决方案 a:focus { outline: none;}

  7. 关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态

    关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态 由于火狐浏览器没有安装 Adobe Flash Player 19 NPAPI这个插件 安装好了之后就可以直接运行了

  8. 火狐浏览器下使用jquery修改img的src

    onUploadComplete': function (file, data) { //$("#submit").removeAttr("disabled") ...

  9. 谷歌、火狐浏览器 缩放为80% 时,margin值才正确

    声明:小白的笔记,欢迎大神指点.联系QQ:1522025433. 在网页布局中,通过 谷歌浏览器或火狐浏览器 预览时,发现我们定义的盒模型width,height,margin,padding 值都是 ...

随机推荐

  1. STL源码分析-AVL树-RB树

    AVL树 不平衡情况 插入节点位于左子节点的左子树(左左) 插入节点位于左子节点的右子树(左右) 插入节点位于右子节点的左子树(右左) 插入节点位于右子节点的右子树(右右) 左左.右右为外侧插入,左右 ...

  2. hql 关联查询

    HQL 带的连接语句只能是实体与 该实体的属性 进行连接 其意义就是为了优化(通过延迟加载查询关联的属性)需要进行配置 from A left join A.B where (b.flag is nu ...

  3. sql server命名规范

    命名规范 表 表名如Order/UserAccout 符合以下规范: 1.     统一采用单数形式,反对Orders 2.     首字母大写,多个单词的话,单词首字母大写,反对order/User ...

  4. ORA-12518 TNS:监听程序无法分发客户机连接 解决办法

    查询的脚本: select count(*) from v$process; --取得数据库目前的进程数. select value from v$parameter where name = 'pr ...

  5. Android WebRTC 音视频开发总结(五)-- webrtc开发原型

    这些天基于WebRTC做了个 手机视频监控 的程序,分享出来,供想了解这方面内容的朋友参考. 这个程序最早是广州一家智能穿戴设备公司请我们做的(他们不需要底层源码,也不需要ios版本),之后我们在这个 ...

  6. 条款20 STL函数对象

    继承标准STL的函数对象 1: struct PopLess : public atd::binary_function<state,state,bool> 2: { 3: bool op ...

  7. 使用OrderBy对List<Person>集合排序

    string sortOrder = Request.QueryString["sortOrder"];   string sortField = Request.QueryStr ...

  8. yii2.0 DetailView 自定义样式

    GII 生成如下: <?= DetailView::widget([ 'model' => $model, 'attributes' => [ 'id', ['label'=> ...

  9. Windows 2008 R2 X64 安装WebsitePanel(WSP虚拟主机管理面板)

                   Windows 2008 R2 X64  安装WebsitePanel(WSP2.0虚拟主机管理面板) 估计很多同学都还不知道WebsitePanel是什么东东吧,Web ...

  10. ASP.NET中Server对象的几个方法

    HtmlDecode 已重载. 对已被编码以消除无效 HTML 字符的字符串进行解码.HtmlEncode 已重载. 对要在浏览器中显示的字符串进行编码.MapPath 返回与 Web 服务器上的指定 ...