javascript - 用于阻止特定页面元素加载的浏览器扩展
问题描述
经过一些谷歌搜索和查看教程后,我有如下代码:
文件background.js
::
chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
if (changeInfo.status == 'complete' && tab.active) {
chrome.tabs.executeScript(tab.ib, {
file: 'inject.js'
});
}
})
文件:inject.js
(function() {
function remove_by_class(className) {
var elem = document.getElementsByClassName(className)[0];
elem.parentNode.removeChild(elem);
}
function remove_by_title(itemTitle) {
var elem = document.querySelector('[title = itemTitle]');
elem.parentNode.removeChild(elem);
}
if (url.includes('SOME_URL_SUBSTRING')){
remove_by_class('CLASS_NAME');
remove_by_title('ITEM_TITLE');
}
})();
这会删除某些元素,通常是在我看到它们加载后一两秒。如果我理解正确,它只能从页面中删除元素,因为它“最初”存在,当它第一次加载时 - 稍后创建的元素(由未来页面上的 Javascript 操作)不受影响,因为我的扩展代码只被注入和执行一次。
相反,我正在寻找的是某种“永远在线”的扩展,它可以主动监视某些元素的加载。基本上,我希望有一个每次在页面中加载/创建 HTML 元素时调用的函数,并且只有在函数返回“true”时才允许实际放置元素。
完成这样的事情的最简单方法是什么?
编辑:例如,假设我想阻止 YouTube 徽标(style-scope ytd-topbar-logo-renderer
加载类名)。我想我想要一个能阻止它加载的 MWE。
(对于上下文:我对 Chrome 扩展程序和一般的 Javascript 都是全新的,但对编程有点熟悉。我现在主要只是好奇/玩耍,但有一个模糊的目标,即实现一种“生产力”工具”,允许我使用 Facebook、Youtube 等来满足我的需要,并带有分散注意力或无关(对我而言)的元素,例如推荐视频,已编辑。)
解决方案
推荐阅读
- outlook - conversationId - 如何检测多个用户之间的对话
- javascript - 按钮更改参数的真/假
- java - 如何修复 RocketmqClient 中的“主题名称服务器中没有主题路由信息”异常
- firebase - 如何根据 Firestore 数据库中的字段从集合中搜索文档?
- php - PHP Laravel如何使用两个表进行排序
- ruby-on-rails - 将图标添加到语义用户界面的搜索下拉列表中
- android - sqlite表中的每一行如何是唯一的。不仅仅是一列行
- swift - 在 Swift 5.0 中将数据持久保存到 KeychainAccess 中
- java - 仅为特定 httpclient 注册协议
- scala - 只读镶木地板文件