javascript - querySelectorAll 和 getElementsByClassName 无法在谷歌日历页面上选择元素
问题描述
我正在尝试创建一个修改calendar.google.com/网页的 chrome 扩展。我想在会议徽章(带有会议标题的蓝色按钮)中插入额外信息。我使用按类名选择元素的内容脚本,然后向元素插入额外的属性。
但是,我似乎无法通过 document.querySelectorAll 和 document.getElementsByClassName 选择这些元素。这让我很困惑,因为通过开发工具-> 元素我可以搜索这个元素。
这是扩展代码:
清单.json:
{
"manifest_version": 2,
"name": "Test",
"version": "1",
"content_scripts": [
{
"matches": [
"https://calendar.google.com/calendar/*"
],
"run_at": "document_end",
"js": ["contentscript.js"]
}
]
}
内容脚本:
var elms = document.querySelectorAll(".FAxxKc"); //always get 0 elements
console.log("Elements found: " + elms.length);
[].forEach.call(elms, function(div) {
div.style.color = "red";
});
元素 HTML 代码:
<div role="button" data-eventchip="" data-opens-details="true" jscontroller="ABQtfe" tabindex="0" data-eventid="NGZyaTU0MDR1cDNsNDZrZmhldDVqdml0N2EgeW9ybG92QGludGVyc29nLmNvbQ" data-keyboardactiontype="0;1" data-focusable="" jsaction="click:cOuCgd; contextmenu:mg9Pef; dblclick:Reio8; mouseenter:tfO1Yc; mouseleave:JywGue" jslog="35463; track:click,dblclick" data-dragsource-type="5" class="NlL62b EfQccc elYzab-cXXICe-Hjleke EiZ8Dd">
<div class="ynRLnc">5pm to 5:45pm, Design Developer Review, User12234, Accepted, Location: Skype, February 43, 2022</div>
<div aria-hidden="true" class="lFe10c">
<div class="Jmftzc RIOtYe cpCWFd PKhkGc EiZ8Dd" style="max-height: 15px;"><span class="FAxxKc">Design Developer Review</span><span class="m6vl0d">, </span><span class="A6wOnd">22pm<span class="m6vl0d">, </span>Skype</span></div>
</div>
</div>
我试图通过 querySelectorAll 选择 class="FAxxKc" 和 jscontroller="ABQtfe" 但没有运气。我想知道如何通过 js 选择这些元素。任何帮助将不胜感激!谢谢!
更新:我可以通过输入以下内容通过 Google Chrome 开发者控制台选择我需要的元素:
> document.querySelectorAll(".FAxxKc")
但是,我不明白为什么 chrome 扩展内容脚本不能通过相同的查询检测元素。
解决方案
推荐阅读
- r - 使用 grepl 和 ifelse 进行基于条件的字符串匹配
- r - Shiny:从名称列表中创建一个 reactiveValues
- c# - “指定的 OData 查询具有无效的实际文字”
- elasticsearch - 让 Elasticsearch 只返回搜索到的结果
- excel - 如何从 Excel 列填充组合框
- ios - 线程 1:EXC_BAD_ACCESS(代码=2,地址=0x7ffeee917fb8)
- twig - 树枝 - 包括块
- shell - 错误:本地不存在应用程序版本。将战争工件上传到 aws beanstalk 环境时出错
- node.js - Express/Node 依赖模式:我可以为“app”实例使用单独的服务文件吗?
- hyperledger-fabric - 超级账本结构链码签名和安装如何工作?