当前位置: 首页 > article >正文

【Chrome Extension】一、CSDN计时扩展设计

【Chrome Extension】一、CSDN计时扩展设计

    • 重点内容
      • 内容脚本 content_scripts
    • 文件目录
        • 1、整体目录
        • 2、manifest.json
        • 3、scripts/content.js
        • 4、css/content.css

重点内容

在这里插入图片描述

内容脚本 content_scripts

1、manifest.json文件配置

{
  "manifest_version": 3,		# *依赖Chrome插件版本
  "name": "FeiFeiYeChuan-Tools-CSDN Article Reading Time", # *插件名称
  "version": "1.0", # *插件版本
  "description": "Add the reading time to Chrome Extension documentation articles",
  "icons": { # 不同情况下显示的图标
    "16": "images/logo.png",
    "32": "images/logo.png",
    "48": "images/logo.png",
    "128": "images/logo.png"
  },
  "content_scripts": [ # content内容
    {
      "js": [
        "scripts/content.js"
      ],
      "css": [
        "css/content.css"
      ],
      "matches": [
        "https://*.blog.csdn.net/*",
        "https://blog.csdn.net/*"
      ]
    }
  ]
}

如上 content_scripts内容脚本:运行读取和修改网页内容的脚本) 主要用于在固定 matches 网页下的执行脚本内容,他们独立于其他扩展程序和托管页面,拥有独立的js,css脚本。

文件目录

1、整体目录

在这里插入图片描述

2、manifest.json
{
  "manifest_version": 3,
  "name": "FeiFeiYeChuan-Tools-CSDN Article Reading Time",
  "version": "1.0",
  "description": "Add the reading time to Chrome Extension documentation articles",
  "icons": {
    "16": "images/logo.png",
    "32": "images/logo.png",
    "48": "images/logo.png",
    "128": "images/logo.png"
  },
  "content_scripts": [
    {
      "js": [
        "scripts/content.js"
      ],
      "css": [
        "css/content.css"
      ],
      "matches": [
        "https://*.blog.csdn.net/*",
        "https://blog.csdn.net/*"
      ]
    }
  ]
}
3、scripts/content.js
onload = function () {
    console.log("content.js已加载");
    const article = document.querySelector(".blog-content-box");

    console.log('article:', article)
    // `document.querySelector` may return null if the selector doesn't match anything.
    if (article) {
        const text = article.textContent;
        // console.log('text:', text)
        const wordMatchRegExp = /\w/g; // Regular expression
        const words = text.matchAll(wordMatchRegExp);
        // matchAll returns an iterator, convert to array to get word count
        const wordCount = [...words].length;
        console.log("wordCount:", wordCount)
        const readingTime = Math.round(wordCount / 200);
        const badge = document.createElement("p");
        // Use the same styling as the publish information in an article's header
        badge.classList.add("color-secondary-text", "type--caption", 'light');
        badge.textContent = `⏱️ ${readingTime} min read`;

        // Support for API reference docs
        const heading = document.querySelector(".title-article");

        heading.insertAdjacentElement("afterend", badge);
    }
}
4、css/content.css
.light{
    color: #77a000;
}

http://www.kler.cn/a/451154.html

相关文章:

  • GTID下复制问题和解决
  • vue3 如何使用 mounted
  • ML-Agents 概述(二)
  • Flask中@app.route()的methods参数详解
  • Scala项目(图书管理系统)
  • 12寸半导体厂等保安全的设计思路
  • Swift Type Erasure(类型擦除)
  • 【docker】pull 镜像异常
  • Redis--通用命令学习
  • centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
  • 技术与教育的融合:构建现代成绩管理系统
  • 4、数据结构与算法解析(C语言版)--栈
  • PH热榜 | 2024-12-24
  • 提高保养效率:4S店预约系统的设计与开发
  • SpringBoot简单使用Stomp
  • 深入理解批量归一化(BN):原理、缺陷与跨小批量归一化(CmBN)
  • Redis数据库操作备份
  • 手机外观边框缺陷视觉检测智慧方案
  • Hive 部署
  • 43.在 Vue 3 中使用 OpenLayers 利用 Canvas Clip 实现上卷帘功能
  • 业务栈、异常栈、中断栈独立设置的优劣势分析(RISC-V架构)
  • 【数据分析】贝叶斯定理
  • dubbo2.7.23注册中心、配置中心、元数据中心
  • centos日志管理,xiao整理
  • MBox20 网关拓新CNC 机床工业数据采集
  • 2024财年美国EB1A和NIW移民项目获批数据发布,获批率连续下跌,原因在哪?