本帖最后由 火菩萨 于 2017-6-25 03:24 编辑

不知道分类对不对 不对请管理大大移动一下

wKioL1fiEXCQ9nkKAAEZAaNTxUk841.jpg-wh_651x-s_4293071078.jpg (20.49 KB, 下载次数: 3)

2017-6-25 02:44 上传

这次的练习是做一个Chrome的扩展,分享一下入门开发过程。。这次做这个插件的功能很简单,就是点击按钮后可以对当前网页的模块进行选择隐藏。

做这个插件一方面是练习实例,还有一方面是,有的时候查资料啊,边上总有很多花花绿绿动来动去的小广告!

很烦有木有,还根本不能关闭!就算有关闭按钮,点击了竟然还跳转到广告页面了(゚Д゚≡゚Д゚)

所以就想做个小插件,让自己可以选择隐藏这些不想看的模块。配置文件每一个扩展都有一个JSON格式的manifest文件,叫manifest.json。所以第一步我们将创建一个manifest.json文件。如下:{

"manifest_version": 2, //固定的

"name": "Cissy's First Extension", //插件名称

"version": "1.0", //插件使用的版本

"description": "The first extension that CC made.", //插件的描述

"browser_action": { //插件加载后生成图标

"default_icon": "cc.gif",//图标的图片

"default_title": "Hello CC", //鼠标移到图标显示的文字

"default_popup": "popup.html" //单击图标执行的文件

},

"permissions": [ //允许插件访问的url

"http://*/",

"bookmarks",

"tabs",

"history"

],

"background":{//background script即插件运行的环境

"page":"background.html"

// "scripts": ["js/jquery-1.9.1.min.js","js/background.js"]//数组.chrome会在扩展启动时自动创建一个包含所有指定脚本的页面

},

"content_scripts": [{  //对页面内容进行操作的脚本

"matches": ["http://*/*","https://*/*"],  //满足什么条件执行该插件

"js": ["js/jquery-1.9.1.min.js", "js/js.js"],

"run_at": "document_start",  //在document加载时执行该脚本

}]

}每个字段的信息我都用注释标明了,接下来就重点说下一些重要字段。需要注意:chrome不允许扩展中的HTML页面内直接内嵌js脚本,而要求所有的脚本都作为外部src来引入browser_action如果browser action拥有一个popup(即设置了default_popup),popup 可以包含任意你想要的HTML内容,并且会自适应大小。popup 会在用户点击图标后出现。若没有设置default_popup,将执行chrome.browserAction.onClicked的内容,若没有设置,就什么都不执行了。也就是如果设置了default_popup,就不会执行chrome.browserAction.onClicked了。

和browser_action对应的还有一个page_action,区别在于:Browser Action对在浏览器中加载的所有网页都生效;Page Action针对特定的网页生效。一个Extension最多可以有一个Browser Action或者Page Action。这里选用Browser Action。backgroundbackground是插件的运行环境。若设置了scripts字段,浏览器的扩展系统会自动根据scripts字段指定的所有js文件自动生成背景页。也可以直接page字段,指定背景页。两者只能设置一个。

一般情况下,我们会让将扩展的主要逻辑都放在 background 中比较便于管理。其它页面可以通过消息传递的机制与 background 进行通讯。理论上 content script 与 popup 之间也可以传递消息,但不建议这么做。消息传递由于插件的js运行环境有区别,所以消息传递机制是一个重要内容。一次简单的请求如果仅需要给你自己的扩展的另外一部分发送一个消息(可选的是否得到答复),你可以简单地使用chrome.extension.sendRequest()或者chrome.tabs.sendRequest()方法。这个方法可以帮助你传送一次JSON序列化消息从content script到扩展,反之亦然。如果接受消息的一方存在的话,可选的回调参数允许处理传回来的消息。sendRequest() 是Chrome33之前的API,33之后还是使用sendMessage()吧。1.内容脚本发送消息到扩展程序chrome.extension.sendMessage({hello: "Cissy"}, function(response) {

console.log(response.farewell);

});2.扩展程序发送消息到内容脚本chrome.tabs.sendMessage(tab.id, {hello: "Cissy"}, function(response) {

console.log(response.farewell);

});3.接收消息chrome.extension.sendMessage()向扩展内的其它监听者发送一条消息。此消息发送后会触发扩展内每个页面的chrome.extension.onMessage()事件。我用的是长时间的保持连接,原理差不多,就是调用接口的区别,所以就不具体介绍这个了 详细的可以看开发文档长时间的保持连接background 和 popup同一个Extension的Extension Page(包括background、popup、tab、infobar、notification)都是运行在同一个进程中的,所以background 和 popup 之间可以直接相互调用对方的方法,不需要消息传递。1.popup调用background中变量或方法var bg = chrome.extension.getBackgroundPage();//获取background页面

console.log(bg.a);//调用background的变量或方法。2.background调用popup中变量或方法var pop = chrome.extension.getViews({type:'popup'});//获取popup页面

console.log(pop[0].b);//调用第一个popup的变量或方法。这里要注意一定要指明type,如果没有指定,则获取Background Page之外的所有Extension Page的window对象 。(。•ˇ‸ˇ•。)这个地方真的纠结好久。然后就是background是一个运行在扩展进程中的HTML页面。它在你的扩展的整个生命周期都存在,而popup是在你点击了图标之后才存在,所以,在获取popup变量时,请确认popup已打开。background 和 content持续长时间的保持会话需要在content script和扩展建立一个长时间存在的通道。当建立连接,两端都有一个Port 对象通过这个连接发送和接收消息。1.内容脚本发送消息到扩展程序var bac = chrome.extension.connect({name: "ConToBg"});//建立通道,并给通道命名

bac.postMessage({hello: "Cissy"});//利用通道发送一条消息。2.扩展程序发送消息到内容脚本扩展程序发送消息到内容脚本与前面类似,但需要指定哪个标签需要连接,(获取tab.id的方法我试了很多,但只有下面这个有效,所以如果大家有什么其他有效的方法,求求求分享!!)chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {//获取当前Tab

var cab = chrome.tabs.connect(tabId, {name: "BgToCon"});//建立通道,指定tabId,并命名

cab.postMessage({ hello: "Cissy"});//利用通道发送一条消息。

}3.接收消息为了处理正在等待的连接,需要用chrome.extension.onConnect 事件监听器,对于content script或者扩展页面,这个方法都是一样的chrome.extension.onConnect.addListener(function(bac) {//监听是否连接,bac为Port对象

bac.onMessage.addListener(function(msg) {//监听是否收到消息,msg为消息对象

console.log(msg.hello);

})

})安装调试设置 —>拓展程序—>加载已解压的拓展程序—>选择文件就行了,记得要打开开发者模式哦

第一次发这样的帖子 排版不怎么好看请无视

回回血我要升级  O(∩_∩)O谢谢

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

android浏览器插件开发,【转】Chrome扩展开发自己的浏览器插件相关推荐

  1. chrome扩展开发(2)- manifest.json文件简述

    一.本文目标 结合具体应用场景,让读者对manifest.json文件的写法和主要属性拥有初步认识. 二.目标读者 chrome扩展开发的初学者,想要先从宏观上了解一下chrome扩展能干哪些事情,而 ...

  2. Chrome扩展开发基础教程(附HelloWorld)

    1 概述 Chrome扩展开发的基础教程,代码基于原生JS+H5,教程内容基于谷歌扩展开发官方文档. 2 环境 Chrome 88.0.4324.96 Chromium 87.0.4280.141 B ...

  3. Chrome扩展开发指南

    前言 Chrome 扩展(通常也叫插件)也是软件程序,使用 Web(HTML, CSS, and JavaScript)技术栈开发.允许用户自定义 Chrome 浏览体验.开发者可以通过增加特效或功能 ...

  4. chrome扩展开发介绍和右键开发

    chrome扩展开发 chrome扩展中文文档官网 Chrome浏览器在全球都拥有可观的忠实用户,抛去其占据了浏览器市场的霸主地位不说,其具备了众多的优点,如良好的用户体验,简单的开发规范等等. 归纳 ...

  5. chrome 扩展开发 - 如何获得iframe中的元素 和 相关问题解答

    记一次需求完成的经过,要获取iframe中的元素,然后在页面进行分段跳转和相关操作,途中遇到了几个问题,方便后续自我回忆. 问题一  chrome扩展开发中 Popup页面无法持续保持的问题 [未解决 ...

  6. WEB之浏览器使用入门--chrome扩展插件安装及好用的扩展插件小集合

    chrome插件 chrome本身是浏览器,提供最基本的谷歌提供的浏览器相关的功能.但是仅仅有基本的chrome本体在很多时候使用还是会感到力不从心,对浏览器本身通过安装一些常用的扩展(extenti ...

  7. chrome 扩展开发手册(一)——准备

    chrome Extensions翻译过来就是谷歌扩展,但我们更喜欢叫它谷歌浏览器扩展或chrome扩展. chrome扩展是定制浏览体验的小型软件程序. 它们使用户能够根据个人需求或偏好定制Chro ...

  8. google扩展开发popup.html,chrome扩展开发问题总结

    console.log Chrome扩展分为三部background.html/js,popup.html和content_script.js.background和content_script可以通 ...

  9. Chrome web 开发用到的插件

    个人博客:付博瀚的个人博客 现在设我是一位web开发人员,以Chrome为阵地.下面是一些能让我少花点时间的工具: WhatFont -- 名字就说明了一切.这是找出你最喜欢网站使用的字体的简单方法, ...

最新文章

  1. VSCode使用笔记
  2. Qt只QStringList的简单使用方法
  3. Redis Cluster原理初步
  4. x86 linux 裁剪过程中能正常跑起来的必要配置项
  5. 微视内测新功能:可发30秒视频到朋友圈
  6. centos7 mysql还原dmp_Linux平台下RMAN异机恢复总结
  7. python下标是什么类型_python数据类型
  8. Java Platform SE 8(Java概念图的描述)中文文档
  9. python socket 实现的简单http服务器
  10. 创业冲突的五种解决方法是_当创始合伙人发生冲突时,最好的解决方法4和5
  11. QT5.14.2+VS2017环境安装
  12. 微信h5开发遇到的小问题
  13. PHP打印九九乘法表
  14. Starvis星光全彩摄像机技术
  15. 2020东软面试题小计(校招Java篇)
  16. 解决-笔记本安装CentOS 7 后无法连接Wi-Fi
  17. 网站移动适配之Meta标注、移动跳转实用篇 转载
  18. 使用AMD显卡安装tch-rs(Rust版Pytorch)
  19. Basic4android 的妈妈 Basic4ppc
  20. 解决vmware虚拟机安装时提示 Intel VT-x 处于禁用状态

热门文章

  1. 火山引擎 veStack 在企业办公场景的落地实践
  2. 我,对安全研究专家下手的黑客!
  3. 最令人讨厌的编程语言:C++ Java 上榜
  4. OpenAI 发布模型实现自动定理证明,妈妈再也不用担心我的数学?
  5. 潘石屹没跑,他去学 Python 了
  6. 注意了!人社部宣布:未来5年,这 10 个新职业有千万缺口
  7. 远程办公 4 大坑,坑坑“致命”!
  8. Java 14 有哪些新特性?
  9. 有大招儿?请收下这份关于数据与智能的晋级攻略!
  10. 行,这本 Python 书彻底火了!