- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 Google Chrome 扩展程序更改任何 Google 搜索中标题条目的属性。我所说的标题条目是指这些带红色下划线的条目:图片:http://postimg.org/image/sgsyccbpf/使用 Mozilla Firefox 检查器查看随机 Google 搜索的 HTML 代码:图片:http://postimg.org/image/gsywhsmkj/我的想法是通过查找类名“rc”来获取每个元素。也许这不是一个好主意,但我认为它会奏效。
为了开发 Chrome 扩展程序,我编写了这些文件:
list .json
{
"name": "Test 1",
"version": "1.0.0",
"manifest_version": 2,
"content_scripts": [
{
"matches": [
"https://*/*",
"http://*/*",
"<all_urls>"
],
"js": ["content_scripts.js"],
"run_at": "document_start",
"all_frames": true
}
]
}
content:scripts.js
var doFilter = function() {
var classR = document.getElementsByClassName("rc");
for(var i=0; i < classR.length; i++) {
classR[i].setAttribute("style", "background-color:green");
classR[i].setAttribute("align", "center");
}
}
window.addEventListener("DOMContentLoaded", function() {
doFilter(document.body);
});
这是我的扩展如何在我自己的 html 页面中工作的演示:图片:postimg.org/image/bdi02zvfl(这是一张图片的链接,但系统不允许我发布超过两张图片)
但是,在 Google 中正常搜索时它不起作用。每个“标题条目”都应该像演示中那样以绿色为背景并居中。
我错过了什么?
谢谢!
最佳答案
由于 Google 异步获取结果,您可以使用 MutationObserver 捕捉 DOM 中的变化并采取相应的行动。参见 this answer 以获得更详细的解释和示例代码。
下面是上述问题的代码,经过一些修改可以实现您想要的。编辑 modifyElem()
函数,几乎任何修改都应该很容易实现。
content.js:
console.log("Injected...");
/* MutationObserver configuration data: Listen for "childList"
* mutations in the specified element and its descendants */
var config = {
childList: true,
subtree: true
};
/* Traverse 'rootNode' and its descendants and modify '.rc' elements */
function modifyElems(rootNode) {
var nodes = [].slice.call(rootNode.querySelectorAll('.rc'));
if (rootNode.className === 'rc') {
nodes.push(rootNode);
}
while (nodes.length > 0) {
var st = nodes.shift().style;
st.backgroundColor = 'green';
st.textAlign = 'center';
}
}
/* Observer1: Looks for 'div#search' */
var observer1 = new MutationObserver(function(mutations) {
/* For each MutationRecord in 'mutations'... */
mutations.some(function(mutation) {
/* ...if nodes have beed added... */
if (mutation.addedNodes && (mutation.addedNodes.length > 0)) {
/* ...look for 'div#search' */
var node = mutation.target.querySelector("div#search");
if (node) {
/* 'div#search' found; stop observer 1 and start observer 2 */
observer1.disconnect();
observer2.observe(node, config);
/* Modify any '.rc' elements already in the current node */
modifyElems(node);
return true;
}
}
});
});
/* Observer2: Listens for element insertions */
var observer2 = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.addedNodes) {
[].slice.call(mutation.addedNodes).forEach(function(node) {
if (node.nodeType === Node.ELEMENT_NODE) {
modifyElems(node);
}
});
}
});
});
/* Start observing 'body' for 'div#search' */
observer1.observe(document.body, config);
关于应用于 Chrome 扩展的 Javascript 类 setAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071523/
request.setAttribute 和 request.getSession().setAttribute() 有什么区别? 它们存储在哪里以及以什么格式? 最佳答案 区别: 当您使用reque
session.setAttribute 和 request.setAttribute 有什么区别? 最佳答案 范围,session属性住所有的session而request属性只在一个请求中 关于j
我一直热衷于重置我的一个 jsp 页面上的一些验证错误。这是一个我无法再联系到的人(死亡或无法联系)继承的项目。我有一个 jsp 页面,其中包含许多自定义标记库,其中更多页面被添加为选项卡,父页面具有
当您从请求和 getServletContext() 调用它们时,get/setAttribute() 之间有什么区别。我注意到你需要 RequestDispatcher rd = request.g
所以我正在学习操作 DOM,并且我注意到一件有趣的事情: 假设我想使用“.”设置元素的 name 属性。点符号: element.name = "someName"; console.log(docu
HttpServletRequest类的setAttribute()方法和HttpSession类的setAttribute()方法有什么区别? 在什么情况下使用? 最佳答案 一个在请求范围内设置一个
为什么我们要使用setAttribute()方法来设置ServletContext参数,因为我们可以通过在web.xml中设置参数并使用getInitParameter()来获取它们来完成相同的工作?
我在 setAttribute() 方面遇到问题。我已经搜索过互联网和这个网站,但他们没有解决我的问题。我想用 javascript 更改图片的宽度和高度,但它不起作用。请帮助我。
在学校,我的老师将我的代码更改为下面的示例它不起作用,我无法理解它是如何工作并修复它的。 function _$(e, attrs) { var el = document.createEle
我有三个元素,我正在尝试为每个元素设置属性: const foldable = document.getElementsByClassName('foldable') let result = Arr
我正在尝试使用 object3D.lookAt 属性更改图像的视角。目前我正在尝试使用组件的 update() 方法更改图像的方向。这是通过更新我的组件的 Lookat 属性来实现的。 functio
我有一些有效的 SVG 代码,可以通过在形状上设置属性来处理鼠标事件: function plot() { ... shape.setAttributeNS(null, "onmouseove
我使用的表单会根据您单击单选按钮的选项来显示一些 div。 问题是 div 设置为不显示,除非我选择一个选项。 所以我添加了以下函数,以确保如果显示 div,它将具有具有所需属性的形式。 所以我给出这
此代码嵌套在 ascx 控件中。 onclientclick 事件有效并且没有错误,但标签文本没有更改?我错过了什么?
同样,我在使用 setAttribute 时遵循我的引用书和在线引用:它根本不起作用; HTML:
这是一些 HTML: lorem Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eaque magnam expedit
我一直在以不同的方式创建元素,但不确定最佳方法。有什么区别: var myselect = document.createElement("select"); myselect.name="blah"
这里我稍微修改了代码 https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_doc_getelementsbyname_loop 来自
我在为另一个元素设置属性时遇到问题。 我正在使用带有 JS 和 HTML 的 PHP 代码,它看起来像: $value 你一定知道我有两个元素。我用于编写文本的第一个('content')和另一个('
我是 Javascript 的新手,我不知道如何在选定的选项上使用 setAttribute。 我的 html 中有一个 id = employee 的 select 元素(使用 javascript
我是一名优秀的程序员,十分优秀!