我的Chrome扩展程序从twitch.tv中删除Vod标题的代码有什么问题?
content.js
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
{
"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/*"]
}]
}发布于 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。
此外,没有必要这样做
text[i] = text[i].style.display='none';它应该改为
text[i].style.display='none';此外,您要寻找的DOM元素可能在DOM加载之后异步创建。
脏但简单的解决方案是将代码包装在setInterval中,每隔几秒钟(或毫秒)检查一次。例如,每秒钟检查一次:
setInterval(function() {
var text = document.querySelectorAll(...);
for (var i = 0, l = text.length; i < l; i++) {
text[i].style.display='none';
}
}, 1000);此解决方案还将再次隐藏元素,以防页面由于任何原因重置其显示状态。
您可能需要考虑使用MutationObserver API来获得更健壮和更高性能的解决方案。
https://stackoverflow.com/questions/47009834
复制相似问题