javascript - 用 Chrome 扩展程序替换 Google 徽标
问题描述
所以我做了一个扩展,它应该用另一张图片替换搜索结果页面的谷歌标志。由于徽标的 img 标签没有自己的类或 id,我不得不通过使用类更改最近的父 div 的 innerHTML 来做这件事有点奇怪。
清单.json:
{
"name": "Logo Replacer",
"version": "1.0",
"manifest_version": 2,
"web_accessible_resources" : [
"images/*.png"
],
"description": "Replaces Google logo",
"permissions": ["activeTab", "declarativeContent", "storage"],
"content_scripts" : [
{
"matches" : [
"<all_urls>" //normally I want only google.com here but idk how
],
"js": ["changePicture.js"]
}
]
}
更改图片.js:
var googleLogo = document.getElementsByClassName("doodle"); //the parent div has the classes "logo" and "doodle"
googleLogo.innerHTML = "<a href=\"https://www.google.com\" data-hveid=\"8\"><img alt=\"Alt\" height=\"33\" src=\"https://example.com/logo.png\" title=\"Title\" width=\"92\" border=\"0\" data-atf=\"1\"></a>";
解决方案
document.getElementsByClassName()
返回一个html collection object
. 要使用此类选择特定的第一个元素,您必须像这样指定索引 -
var googleLogo = document.getElementsByClassName("doodle")[0];
您还可以简化使用方法querySelector
来获取具体信息img
,然后进行src
如下更改 -
document.querySelector(".logo.doodle a img").src = "Your desired source"
推荐阅读
- google-sheets - 查询给出错误的输出电子表格
- sql - 需要 SQL 在不同的列中查找具有重复值的记录
- c++ - C++ Windows 驱动程序 MSB3030 无法复制文件 '' 因为找不到
- javascript - 使用对象的 GraphQL 字段类型
- c - 在 C 中无法识别字符串
- symfony - 从数据库 symfony 加载时对象太大
- java - Liquibase 迁移不在不同的环境中运行
- sql - 使用 SQL 和 T-SQL 连接多个表
- java - 在垃圾收集器开始行动之前,我如何回收不再需要的对象?
- python-2.7 - 保存文件而不在 Python 中关闭它