首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除twitch.tv上的HTML元素不起作用

删除twitch.tv上的HTML元素不起作用
EN

Stack Overflow用户
提问于 2017-10-30 07:17:49
回答 1查看 108关注 0票数 0

我的Chrome扩展程序从twitch.tv中删除Vod标题的代码有什么问题?

content.js

代码语言:javascript
复制
var text = document.getElementsByTagName('video-preview-card__title video-preview-card__title--twoline overflow-hidden relative mg-t-05 font-size-5');
for (var i = 0, l = text.length; i < l; i++) {
  text[i] = text[i].style.display='none';
}

manifest.json

代码语言:javascript
复制
{
  "manifest_version": 2,

  "name": "Remove Twitch Vod Title HTML",
  "version": "0.1.0",
  "description": "Removes Twitch Vod Title HTML",

  "content_scripts": [{
    "js": ["content.js"],
    "matches": ["https://go.twitch.tv/*", "https://www.twitch.tv/*"]
  }]

}
EN

回答 1

Stack Overflow用户

发布于 2017-11-03 12:10:31

首先,您的getElementsByTagName调用看起来不对,您应该将一个tagName传递给它,参见https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByTagName

如果您正在寻找更复杂的选择器,请使用querySelectorAll,请参见https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll

此外,没有必要这样做

代码语言:javascript
复制
text[i] = text[i].style.display='none';

它应该改为

代码语言:javascript
复制
text[i].style.display='none';

此外,您要寻找的DOM元素可能在DOM加载之后异步创建。

脏但简单的解决方案是将代码包装在setInterval中,每隔几秒钟(或毫秒)检查一次。例如,每秒钟检查一次:

代码语言:javascript
复制
setInterval(function() {
  var text = document.querySelectorAll(...);
  for (var i = 0, l = text.length; i < l; i++) {
    text[i].style.display='none';
  }
}, 1000);

此解决方案还将再次隐藏元素,以防页面由于任何原因重置其显示状态。

您可能需要考虑使用MutationObserver API来获得更健壮和更高性能的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47009834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档