chrome插件开发步骤

chrome插件有什么用

chrome插件可以做很多事情,比如说大家经常用的二维码生成器,禁广告的,它类似于用户的操作,但是又不需要用户操作。

开始开发

不需要任何设备,只需要一个编辑器,一个chrome浏览器。

先讲一下插件的目录结构

在这里插入图片描述
最重要的一个文件:manifest.json
整个文件夹的精髓所在,可以说是插件的入口。

manifest内容
{
    "name": "todo-plugin", //  名称
    "version": "0.9.0", // 版本号
    "manifest_version": 2, // 一定需要,如果没有,会报错
    "description": "chrome plugin demo", // 描述
    "content_scripts": [ // 见详情【1.1】
        {
            "matches": ["*://*/*"],
            "js": ["jquery.js","index.js"]
        }
    ],
    "background":{ // 见详情【1.2】
        "scripts":["jquery.js","background.js"]
    },
    "permissions": [ 
        "http://tcservice.17usoft.com/"
    ]
        
}
【1.1】content_scripts 详细说明

Content Scripts是运行在Web页面的上下文的JavaScript文件。通过标准的DOM,Content Scripts可以操作(读取并修改)浏览器当前访问的Web页面的内容。
使用限制:
1.不能访问如下chrome.* API
chrome.extension API
chrome.i18n API
chrome.runtime API
chrome.storage API
2.不能访问Chrome扩展页面中定义的JavaScript变量和函数
3.不能访问Web页面或其他Content Scripts中定义的JavaScript变量和函数

属性说明:

名称类型可选/必选说明
matchesstring数组必选Content Script注入的Web页面
exclude_matchesstring数组可选Content Script不注入的Web页面
include_globsstring数组可选对于matches匹配的Web页面,进一步限定URL
exclude_globsstring数组可选对于matches匹配的Web页面,进一步排除URL
match_about_blankboolean可选是否注入Content Script到about:blank和about:srcdoc页面,默认false
cssstring数组可选注入到匹配的Web页面中的CSS文件,顺序相关
jsstring数组可选注入到匹配的Web页面中的JS文件,顺序相关
run_atstring可选控制JS文件注入的时机,如"document_start", “document_end”, “document_idle”。默认"document_idle","document_start"表示在CSS文件之后,DOM构建或其他脚本运行之前,注入JS文件。“document_end”,表示在DOM构建结束之后,图片或框架加载之前,注入JS文件。"document_idle"表示在"document_end"与触发window.onload事件之间的某个时间,注入JS文件,具体时间可以根据页面的内容和加载的进度优化。
all_framesboolean可选控制JS文件是否在匹配的Web页面中的所有框架中运行。默认false表示只在顶层框架中运行

如上述的配置:matches表示所有web页面均注入
js表示先加在jq,再加载index.js

【1.2】background配置相关

扩展常常用一个单独的长时间运行的脚本来管理一些任务或者状态。
背景页是一个运行在扩展进程中的HTML页面。它在你的扩展的整个生命周期都存在,同时,在同一时间只有一个实例处于活动状态。

在一个有背景页的典型扩展中,用户界面(比如,浏览器行为或者页面行为和任何选项页)是由沉默视图实现的。当视图需要一些状态,它从背景页获取该状态。当背景页发现了状态改变,它会通知视图进行更新。

实例

通过background.js跨域请求接口
content script js中代码

 chrome.runtime.sendMessage({
        type:'fetch',
        url:'https://flights.ctrip.com/itinerary/api/12808/products',// ctrip机票接口
        para:para
    }, function(response) {
        console.log('收到来自后台的回复:' + response);
    });

background.js

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse)
{
    console.log('收到来自content-script的消息:');
    console.log(request, sender, sendResponse);
    if (request.type == 'fetch') {
        var param = request.para
        param = JSON.stringify(param)
        $.ajax({
            url:"https://flights.ctrip.com/itinerary/api/12808/products",    //请求的url地址
            dataType:"json",   //返回格式为json
            contentType:"application/json;charset=utf-8",
            async:true, //请求是否异步,默认为异步,这也是ajax重要特性
            data:param,    //参数值
            type:"POST",   //请求方式
            beforeSend:function(){
                //请求前的处理
            },
            success:function(req){
                //请求成功时处理
                console.log(req)
                sendResponse(JSON.stringify(req));
            },
            complete:function(){
                //请求完成的处理
            },
            error:function(){
                //请求出错处理
            }
        });
    }
    return true;
});

如果有打印结果,说明成功
否则,就慢慢解决坑吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值