chrome系列-扩展程序开发学习-js内嵌

chrome系列-扩展程序开发学习-js内嵌

月光魔力鸭

2018-09-07 08:43 阅读 664 喜欢 0 chrome系列 chrome插件

需求:可能会有在页面加载的时候想执行某个js,例如统计页面的DOM等等。

那么这里就需要用到content_scripts.

在这之前,先放一个类似通用的模版,基本上大部分的扩展程序都可以在上面修改。

manifest.json配置

{
    "manifest_version":2,
    "app":{
        "background":{
            "scripts":["background.js"]
        }
    },
    "name":"your extension name",
    "version":"1.0",
    "default_locale":"en",
    "description":"your extension description",
    "icons":{
        "16":"img/icon16.png",
        "48":"img/icon48.png",
        "128":"img/icon128.png"
    },
    "browser_action":{
        "default_icon":{
            "19":"img/icon19.png",
            "38":"img/icon38.png"
        },
        "default_title":"extension title",
        "default_popup":"popup.html"
    },
    "page_action":{
        "default_icon":{
            "19":"img/icon19.png",
            "38":"img/icon38.png"
        },
        "default_title":"extension title",
        "default_popup":"popup.html"
    },
    "background":{
        "scripts":["background.js"]
    },
    "content_scripts":[
        {
            "matches":["http://www.byyui.com/*"],
            "css":["mystylesheet.css"],
            "js":["jquery.js","myjs.js"]
        }
    ],
    "options_page":"option.html",
    "permissions":[
        "*://www.gstyle.com/*"
    ],
    "web_accessible_resources":[
        "img/*.png"
    ]
}

以上这个基本上能满足大部分的扩展需求,以后在开发,可以在这上面进行删减。不认识没关系,一个一个的来练习。

这一节用到的就是content_scripts.操作用户正在浏览的页面。

通过content_scripts可以指定将哪些脚本文件注入到哪些页面中,用户访问可以,对应的脚本会自动执行,从而对DOM进行操作。

简单说下content_scripts里面的属性:

content_scripts 是一个数组,数组里面是对象,对象中包含的字段有:
- matches
- exclude_matches
- css 
- js
- run_at
- all_frames
- include_globs
- exclude_glbos
对应的含义是:
- matches 定义哪些页面会被注入脚本
- exclude_matches 定义哪些页面不会被注入脚本
- css ,js 定义注入的样式和js文件
- run_at 定义了何时注入
- all_frames 定义脚本是否会注入到frame框架中
- include_globs 和 exclude_globs 则是全局URL匹配。最终脚本是否会被注入到哪些页面中是由matches exclude_matches include_globs exclude_globs 的值共同决定。

其中要注意的是:脚本的变量和浏览页面的变量是不通的。

OK,那么我们现在来做一个最简单的控制,在某个url浏览器在控制台打印出我们的字符串。

manifest.json 如下:

{
    "manifest_version":2,
    "name":"DOM - DEMO",
    "version":"1.0",
    "description":"操作DOM 练习",
    "content_scripts":[
        {
            "matches":["http://*.byyui.com/"],
            "js":["demo.js"]
        }
    ]
}
demo.js
console.log('my extension print log')

由于没有页面,我们只需要这些就足够了。 chrome浏览器加载后,我们浏览 http://www.byyui.com 就会发现控制台已经打印出我们的字符串了。

示例图

后续例子:跨域请求数据

转载请注明出处: https://chrunlee.cn/article/chrome-learn-2.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
本篇文章以一个实际的小项目为主题进行从头到尾的讲解实现,该项目总计开发时长约6小时,主要是有很多页面或功能都是现成的,直接复制过来的,剩下的就调整下样式、字段内容等。
本来是想做一个图床,然后在chrome扩展中添加上,但是发现chrome的扩展有点毫无头绪,只能从头练习,从头学了。
docker build 执行yum失败,找不到repo
最近有一个任务一直在占满cpu, 总是会让我的服务器宕机,可是还得跑,想来想去想到了docker,印象中可以对cpu进行限制,这里简单记录下过程。
ubuntu 配置nginx反向代理,这里简单记录下,后续再复习..
最近有个小功能需要一些基础数据,找了一下在小程序上有发现,暂时还没找到他的网站,想着把这些数据爬一些下来做为基础数据使用的。本来还想着直接反编译小程序的,没想到微信变更了加密方式,以前反编译的路子走不通了。
上一张中已经完成了比较简易的3D全景浏览,但是...这是写死在xml中的,对于我们实际的项目,这种情况是不可能适应的。所以,来了解下如何动态加载xml已经设置对应的热点。
近期有添加数学公式的需求,找来找去,最后还是选择了最简单的。tinymce+kityformula