`

chrome 扩展开发需要了解的

 
阅读更多
chrome 扩展可以通过 chrome.webRequest.onBeforeSendHeaders 回调来修改请求头,修改请求头部字段会在 TCP 连接发起之后,也就是这个时候 URL 已经是不能变的,这个接口也可以修改 URL,会导致一次重定向,不过貌似重定向之后携带的 cookie 会有些异常,没有细跟
那么,自然的,会想到一个问题,怎么获取请求的响应呢,对于这个问题,答案是,一般情况下,chrome 扩展无法获取请求的响应,参看,http://stackoverflow.com/questions/18534771/chrome-extension-how-to-get-http-response-body

那么不一般的情况呢,我们需要通过 chrome.devtools.network.onRequestFinished 来监听响应报文,但是,这个接口只能在 dev tools 中使用,所谓 dev tools,就是说,你需要自定义一个控制台面板,就是按下 F12 之后出来的那些 Elements, Network, Console 那一排,在那后面,自己追加一个,参看,http://stackoverflow.com/questions/10393638/chrome-extensions-other-ways-to-read-response-bodies-than-chrome-devtools-netw

写一个自己的 panel 其实不难,还是 html javascript css 那一套,通过 chrome.devtools.panels.create 来创建自己的 panel
问题是一般情况下,我们把调试信息打到 console.log 里面,这个是调试一般页面的好方法,但是,如果我们本身就要调试一个 console,那么怎么办呢,http://codemadesimple.wordpress.com/2012/11/15/debug-chrome-dev-tools-panel/,这里提供了一个思路,把 dev page 写成 options page,然后用 options page 来调,但是,如果我们的 dev page 是跟当前页面紧密耦合的,例如,我们需要调试当前页面的响应的话,这种情况,他的方法貌似就不奏效了
http://stackoverflow.com/questions/11103780/console-log-for-chrome-devtools-api,这里有一些其他的讨论,主要是重载 console 的,但是在我这儿试了试,貌似不是很奏效
所以我最后的办法是 alert
另外一个小 tips,对于 json 格式的 alert,会打 object,这个其实毛线用都没有,我也知道他是一个 object 啊,这个时候,可以 alert(JSON.stringify(xxx)),可以把 json 内容展开
如果想要在插件中发起跨域的 ajax 请求,记得在 manifest.json 中声明相关的权限
对于旧版本的 chrome,例如 chrome 31,即使你声明了跨域的权限,也没法在 dev page 中发起跨域的请求,background page 中可以
所以就需要曲线救国,使用 chrome 扩展的模块间通讯接口,把需要发起的请求包装送到可以发起请求的地方去发送,收到回复之后再送回来,相关的接口是 chrome.runtime.sendMessage 和 chrome.runtime.onMessage.addListener
chrome.runtime.onMessage.addListener 的回调函数中有一个 sendResponse 的回复用的函数,如果需要异步的使用这个函数,记得 return true,这是个坑,而且不容易发现,官方是这么说的,runtime.onMessage: The chrome.runtime.onMessage listener must return true if you want to send a response after the listener returns
近日,google 开始推送 chrome 35.0.1916.114,从这个版本开始,chrome 不再允许用户自行安装插件
上有政策下有对策,对策总结起来不外乎,不升级 chrome,把插件发布到 store,让用户用开发者模式运行
另外还有一个大杀器,https://support.google.com/chrome/a/answer/188453?hl=en,这个大杀器我还没怎么深入研究,稍后再看看这个好不好使
感言,chrome 已经不是一个浏览器,而像是一个操作系统了
———————

2014-6-13 11:22:07 update

http://tieba.baidu.com/p/1740161948,这里提到了用 ad block plus 作为例子的企业定制安装方式
http://dev.chromium.org/administrators/policy-list-3#ExtensionInstallForcelist,这里是 google 官方给出的一些安装说明
https://developer.chrome.com/extensions/hosting.html,这里说明了安装文件的托管方式
但是当我尝试使用这种方式进行安装的时候一直安装不上去,阅读了文档,提到 content type,也正确设置了,还是不行
于是我尝试把 ad block plus 的安装文件部署到自己的环境上,是可以安装的,于是我开始认为是我的 crx 打包的有问题
后来查到了这里,http://productforums.google.com/forum/#!topic/chrome/ayfF5WaeQqc,同学们在反应 web store 的扩展安装不上去,从这个帖子里面找到一个叫  chrome debug 的 log 文件
http://www.chromium.org/for-testers/enable-logging,这里说明了怎么打开 log
从 log 中翻查,终于找到原因,原来是扩展的 id 不同,在开发者模式下,我看到一个 id 是 a,但是,打包之后,扩展的 id 变成了 b,跟声明的不符,所以安装不上,哇靠,要是不看日志,鬼知道 id 会不匹配啊
https://developer.chrome.com/extensions/packaging,这里说了一些打包时候的注意事项
https://developer.chrome.com/extensions/autoupdate,这里说明了一些关于扩展自动升级的事项
旧版本的 chrome,例如 31,在企业安装的时候,会比较慢,一般需要等 1-3 分钟才会发起请求去拉安装文件,新版本的就快很多,一般一启动就去拉了,不知道为什么
chrome 31 的插件安装缓慢跟版本本身有关,跟网络环境无关,这个没办法
————————


http://zrj.me/archives/1203
分享到:
评论

相关推荐

    Chrome扩展及应用开发

    在编写Chrome扩展时,开发者通常需要对前端技术有较深入的了解,尤其是JavaScript,因为它是构成Chrome扩展的核心。为了提高JavaScript代码的执行效率,Chrome使用了V8引擎,这是Google开发的一个高性能JavaScript...

    CHROME扩展及应用开发 PDF 带目录 高清完整版

    知识点一:Chrome扩展开发基础 Chrome扩展是由一系列文件组成的软件包,这些文件可以包含HTML、CSS、JavaScript等。开发Chrome扩展需要了解一些基础概念,如背景脚本、内容脚本、弹出页面、扩展程序页面、Manifest...

    Chrome扩展及应用开发.pdf

    ### Chrome扩展及应用开发知识点概览 #### 一、初步接触Chrome扩展应用开发 - **认识Chrome扩展及应用** - Chrome扩展(Extensions)是一种基于Web技术(HTML、JavaScript、CSS)开发的小型应用程序,旨在增强...

    Chrome扩展插件开发Manifest V3案例:把某招聘网站上的招聘信息导出Excel

    首先,我们需要了解**Chrome扩展插件的基本结构**。一个典型的Chrome插件由以下几个部分组成:manifest.json文件(定义插件的行为和权限)、背景脚本(持续运行的JavaScript代码)、内容脚本(与网页交互的脚本)、...

    chrome扩展及应用开发

    首先,我们要了解Chrome扩展的基本结构。一个基本的Chrome扩展通常包括以下几个部分: 1. **manifest.json**:这是扩展的核心配置文件,用于定义扩展的元数据、权限、内容脚本、背景页面、图标以及其他关键设置。 ...

    chrome扩展开发——自动填表实例[收集].pdf

    本文将详细介绍 Chrome 扩展开发中的自动填表实例,通过分析 manifest.json 配置文件,了解扩展应用的权限、内容脚本、浏览器行为和弹出页面的实现机制。 一、权限(permissions) 在 manifest.json 配置文件中,...

    chrome扩展插件获取ajax请求记录

    在开发过程中,还需要注意Chrome的安全策略和权限设置,确保扩展在获取Ajax请求记录时不侵犯用户隐私,并遵循Chrome的扩展开发指南。 总之,Chrome扩展插件获取Ajax请求记录是一项重要的Web开发技能,它可以帮助...

    ChromeExtensionDocument:chrome插件中文开发文档.zip

    总的来说,这个压缩包是Chrome插件开发者的宝贵资源,涵盖了从基础概念到高级技巧的各种知识,对于想要涉足Chrome扩展开发的C#程序员来说,是一份极好的学习材料。通过学习和实践,开发者可以创建出满足特定需求的...

    chrome扩展程序开发/chrome运行本地JS脚本

    首先,让我们了解Chrome扩展的基本结构。一个标准的Chrome扩展通常包括以下几个文件: 1. `manifest.json`:这是扩展的配置文件,包含了扩展的基本信息,如扩展ID、版本号、权限需求以及加载的文件等。 2. `...

    Chrome 扩展-及应 用开发

    3. 权限管理:Chrome扩展开发中,manifest文件会定义扩展需要的权限,这些权限包括但不限于书签访问、标签页管理、历史记录读取、网络请求等。扩展在安装时会向用户声明需要的权限,用户同意后,扩展才能执行对应的...

    Chrome扩展程序开发调试简明教程

    Chrome 扩展程序开发调试简明教程 Chrome 扩展程序是Chrome 浏览器的一种插件,能够增强浏览器的功能和性能。本文档旨在提供一个简明的教程,指导用户如何开发和调试 Chrome 扩展程序。 一、加载扩展程序 加载...

    Chrome扩展及应用开发-高清扫描-chrome插件开发必看

    综上所述,"Chrome扩展及应用开发"这本书应该覆盖了从基础概念到高级技巧的全方面内容,对于想要学习或提升Chrome插件开发能力的人来说,是一份宝贵的资源。通过阅读并实践书中的示例,你将能够创建出功能强大、个性...

    Chrome扩展程序项目基础.zip

    总的来说,"Chrome扩展程序项目基础.zip"是一个很好的起点,对于想要学习Chrome扩展开发的人来说,可以快速了解并实践基础的开发流程。通过这个项目,你可以学习到如何构建、配置和调试Chrome插件,为今后的扩展开发...

    Chrome插件开发.pdf

    Chrome 插件开发概述 Chrome 插件开发是指在 Google Chrome 浏览器上开发小程序的过程,这些小程序可以增强浏览器的...通过了解插件的基本概念和开发步骤,我们可以创建自己的 Chrome 插件,提供更多的功能和服务。

    Chrome插件开发完整教程

    首先,我们需要澄清一点,Chrome插件实际上是指Chrome扩展,它们之间存在细微的区别。真正的Chrome插件(Chrome Extension)通常涉及更底层的浏览器功能扩展,可能需要深入理解浏览器源码。然而,日常所说的Chrome...

    chrome插件开发文档-详细pdf版.7z

    Chrome插件,也被称为Chrome扩展,是Google Chrome浏览器上的应用程序,可以增强或修改浏览器的功能。它们通常是用HTML、CSS和JavaScript编写,通过Chrome的API(应用程序接口)与浏览器交互,提供用户自定义的浏览...

    chrome扩展实例

    360扩展是针对360浏览器的类似插件,它们的工作原理与Chrome扩展相似,但可能需要针对360浏览器的特定API进行调整。360浏览器在国内市场占据一定份额,因此开发360扩展可以扩大插件的用户群体。 创建Chrome扩展的...

    Chrome插件开发3.0

    Chrome插件开发3.0是关于构建和优化Google Chrome浏览器扩展程序的一门技术主题。随着互联网的快速发展,浏览器插件已经成为提升用户体验、增强浏览器功能的重要工具。Chrome作为全球最受欢迎的浏览器之一,其丰富的...

Global site tag (gtag.js) - Google Analytics