在寻找插件开发资料的过程中找到了一个开发浏览器插件的开源项目——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. PHP获取今天、昨天、明天的日期

    <?php echo "今天:".date("Y-m-d")."<br>"; echo "昨天:".d ...

  2. SQL表自连接用法

      一个表与自身进行连接,称为自连接 问题的提出:一个网友提出这样一个SQL题目,说自己想了很久没解决,我一看,这不是很简单吗 可是自己在查询分析器调试了半天原来问题并不是那不简单 有一个学生表,里面 ...

  3. 如果公司里有上百个表要做触发器,如果手动写代码的话。很累,所以今天写了一个小程序,自动生成mysql的触发代码。

    <?php $dbname = 'test';//数据库 $tab1 = 'user'; //执行的表 $tab2 = 'user_bak'; //被触发的表 $conn = mysql_con ...

  4. dubbo使用遇到的问题

    转自:http://blog.csdn.net/liwf_/article/details/40297121?utm_source=tuicool&utm_medium=referral 把一 ...

  5. Use BEC to do mobile phone forensics

    Belkasoft Evidence Center makes me very impressed that it supports lots of evidence type. I have to ...

  6. 何时使用 Em 与 Rem

    原文  http://www.w3cplus.com/css/when-to-use-em-vs-rem.html   你可能已经很熟练使用这两个灵活的单位,但你可能不完全了解何时使用rem,何时使用 ...

  7. Largest palindrome product

    A palindromic number reads the same both ways. The largest palindrome made from the product of two 2 ...

  8. PayPal 开发详解(二):开启【自动返回】和【数据传输】

    1.使用我们的商家测试帐号登录 sandbox :http://www.sandbox.paypal.com Business帐号登录 2.登录以后点击:[我的paypal]->[用户信息]-& ...

  9. 一分钟学会(一):.NET之正则表达式

    本文介绍正则表达式在.NET中的基本应用,代码简单粗暴,实例浅显易懂,让你一分钟快速上手正则(大鸟请略过). 本文为入门文章,很多时候我们只是忘记了语法,这也可作为一个快速查询的参考. 如果想深入学习 ...

  10. HTTP状态

    HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应 ...