使用Chrome扩展在HTML页面中添加类
问题描述:
我尝试使用扩展名为Chrome的Facebook页面上的元素添加一个类。不幸的是,我的脚本无法正常工作......我的目标是选择包含Feed中广告的帖子。所有的帖子容器看起来都是相似的,唯一的区别是“赞助”标签,它是主容器的高度子标签。使用Chrome扩展在HTML页面中添加类
的script.js:
var x = document.getElementsByClassName("uiStreamSponsoredLink").parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
x.className += "otherclass";
清单:
{
"name": "Project",
"version": "0.0.1",
"manifest_version": 2,
"default_locale": "en",
"icons": {
"16": "img/icon16.png",
"48": "img/icon48.png",
"128": "img/icon128.png"
},
"permissions": [
"*://*.facebook.com/*"
],
"content_scripts": [
{
"matches": [
"*://*.facebook.com/*"
],
"css": [
"content_script/replace-reactions.css"
],
"js": [
"content_script/script.js"
]
}
],
"web_accessible_resources": [
"img/*.png"
]
}
答
在的script.js添加此,
例如,
document.getElementsByTagName( '主体') .attr('class','YOUR CLASS NAME');
这里我设置了body标签的类名。您可以将其设置为页面中的任何元素。
+0
时,facebook会更新HTML但我只想指出在Facebook feed中包含添加项的元素。我想我必须找到这个元素并为它添加一个特定的类,不是吗? – AlphaNico
+0
是的你是对的 –
您应该首先检查浏览器控制台是否有错误。 'document.getElementsByClassName(“uiStreamSponsoredLink”)。例如,parentNode'确实是错误的,因为getElementsByClassName返回一个NodeList,所以您需要单独访问该列表上的项目。 – CBroe
你的意思是做一个foreach?问题是,当你滚动 – AlphaNico