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

简介: 需求:可能会有在页面加载的时候想执行某个js,例如统计页面的DOM等等。
需求:可能会有在页面加载的时候想执行某个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 就会发现控制台已经打印出我们的字符串了。

示例图

后续例子:跨域请求数据

相关文章
|
23天前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
429 1
|
27天前
|
JavaScript 前端开发 安全
TypeScript的优势与实践:提升JavaScript开发效率
【10月更文挑战第8天】TypeScript的优势与实践:提升JavaScript开发效率
|
27天前
|
JavaScript 前端开发 IDE
深入理解TypeScript:提升JavaScript开发的利器
【10月更文挑战第8天】 深入理解TypeScript:提升JavaScript开发的利器
28 0
|
4天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第31天】本文将引导你进入Node.js的奇妙世界,探索其如何革新后端开发。通过浅显易懂的语言和实际代码示例,我们将一起学习Node.js的核心概念、搭建开发环境,以及实现一个简单但完整的Web应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇通往高效后端开发的大门。
|
10天前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
84 9
|
5天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第30天】本文将通过一个Node.js的简单示例,引导你进入Node.js的世界。我们将从基础概念讲起,然后一步步深入到代码实现,最后总结Node.js在后端开发中的优势和应用场景。无论你是前端开发者还是后端新手,这篇文章都将为你打开一扇了解Node.js的大门。
15 2
|
13天前
|
开发框架 JavaScript 前端开发
HarmonyOS UI开发:掌握ArkUI(包括Java UI和JS UI)进行界面开发
【10月更文挑战第22天】随着科技发展,操作系统呈现多元化趋势。华为推出的HarmonyOS以其全场景、多设备特性备受关注。本文介绍HarmonyOS的UI开发框架ArkUI,探讨Java UI和JS UI两种开发方式。Java UI适合复杂界面开发,性能较高;JS UI适合快速开发简单界面,跨平台性好。掌握ArkUI可高效打造符合用户需求的界面。
56 8
|
12天前
|
JavaScript 前端开发
javascript开发的简单的弹幕插件
这是一个原生javascript开发的简单的弹幕插件,具有美观、易用,占用的资源较低等特点,可以给弹幕设置内容、颜色、头像、链接地址等属性,鼠标悬停等,简单实用,欢迎下载!
31 5
|
1天前
|
运维 监控 JavaScript
鸿蒙next版开发:分析JS Crash(进程崩溃)
在HarmonyOS 5.0中,JS Crash指未处理的JavaScript异常导致应用意外退出。本文详细介绍如何分析JS Crash,包括异常捕获、日志分析和典型案例,帮助开发者定位问题、修复错误,提升应用稳定性。通过DevEco Studio收集日志,结合HiChecker工具,有效解决JS Crash问题。
15 4
|
2天前
|
Web App开发 JavaScript 前端开发
探索后端开发:Node.js与Express的完美结合
【10月更文挑战第33天】本文将带领读者深入了解Node.js和Express的强强联手,通过实际案例揭示它们如何简化后端开发流程,提升应用性能。我们将一起探索这两个技术的核心概念、优势以及它们如何共同作用于现代Web开发中。准备好,让我们一起开启这场技术之旅!
10 0