javascript - 如何等待规避的 html 元素加载到内容脚本中
问题描述
我正在尝试制作一个 chrome 扩展程序,它会自动为 Zoom 录音提供下载链接。这是一个两步过程:
- 从 ID 已知的特定 html 元素中获取链接。
- 在网页中插入一些 html 以制作可点击的下载链接。
该扩展目前由清单和内容脚本组成。清单:
{
"name": "Zoom Downloader",
"description": "creates a link for downloading view-only lectures",
"version": "1.0",
"manifest_version": 3,
"content_scripts":[
{
"matches": ["*://*.zoom.us/rec/play/*"],
"js": ["contentScript.js"],
"run_at": "document_end"
}
]
}
内容脚本:
window.onload = process
function process(){
var id = "vjs_video_3_html5_api";
var element = document.getElementById(id);
if (element==null){
console.log("element does not exist");
}
else{
if (element.hasAttribute("src")){
var node = document.getElementsByTagName('body')[0];
var extra_element = "<a href= \'" + element.src + "\'<download> Download Video <a/>";
node.innerHTML = extra_element + node.innerHTML;
}
else{
console.log("element lacks a source attribute");
}
}
}
通常,这会将“元素缺少源属性”打印到控制台,但有时如果我事先清除所有浏览数据(我不确定为什么),它会完美运行。我可以通过在控制台中手动运行 javascript 创建链接,但我的目标是每次访问页面时自动生成链接。感谢您的帮助和建议。
另外,如果您能想到一个比我拥有的更好的标题,请发表评论。我是 stackoverflow 和制作 chrome 扩展的菜鸟。
解决方案
推荐阅读
- apache-flink - 在我的简单应用程序中没有创建检查点文件
- postgresql - postgres数据与同一张表中的多个服务器同步
- ruby-on-rails - 如何在点击 ruby on rails 时从下拉列表中获取选定的值?
- angular - 如何在使用 observable 更新数组时更新 *ngFor 以及如何在网站加载时初始化 observable?
- typo3 - TYPO3 routeEnhancers 在根页面上带有后缀“.html”
- java - 在 UPDATE 语句中绑定和添加参数:PostgreSQL
- javascript - 带有 Javascript 的 WebView 不断重新加载
- text-to-speech - iOS 13 Text To Speech (TTS - AVSpeechSynthesisVoice) 在更新后对某些用户崩溃
- ethereum - 错误:所需的气体超过限额或总是失败的交易 - web3js
- sql - 在左连接后从两列的串联中选择