Google chrome extension 使用Chrome扩展修改Google搜索结果页面
我想做一个Chrome扩展来修改谷歌搜索结果页面。我知道我可以使用内容脚本来做这件事,因为它有能力做到这一点。但不幸的是,它失败了。代码是我写的Google chrome extension 使用Chrome扩展修改Google搜索结果页面,google-chrome-extension,Google Chrome Extension,我想做一个Chrome扩展来修改谷歌搜索结果页面。我知道我可以使用内容脚本来做这件事,因为它有能力做到这一点。但不幸的是,它失败了。代码是我写的 $('h3.r').append('<b>a</b>') 或 ,它起作用了。为什么? 顺便说一句,我想进行调试,但是当我打开开发工具时,我找不到扩展内容脚本。我可以看到其他扩展的内容脚本。您是否将jQuery添加到清单中的内容脚本中 如果使用jQuery,则必须编写manifest.json,如下所示: "content_s
$('h3.r').append('<b>a</b>')
或
,它起作用了。为什么?
顺便说一句,我想进行调试,但是当我打开开发工具时,我找不到扩展内容脚本。我可以看到其他扩展的内容脚本。您是否将jQuery添加到清单中的内容脚本中 如果使用jQuery,则必须编写manifest.json,如下所示:
"content_scripts":[
{
"matches":["http://www.google.com/*"],
"js":["jquery-1.9.1.min.js", "contentscripts.js"]
}
]
function findH3(){
$('h3.r').append('<b>a</b>')
}
searchResultArea.addEventListener('DOMNodeInserted', findH3);
好的,在阅读了Google搜索结果页面的页面来源后,我想我知道问题出在哪里了:
Google使用AJAX加载搜索结果,因此,当您更改查询词并再次搜索时,页面会这样做 不刷新,这就是为什么不能在搜索结果中获取任何DOM元素
这意味着您必须为DomainNodeInserted添加一个事件侦听器
代码如下:
"content_scripts":[
{
"matches":["http://www.google.com/*"],
"js":["jquery-1.9.1.min.js", "contentscripts.js"]
}
]
function findH3(){
$('h3.r').append('<b>a</b>')
}
searchResultArea.addEventListener('DOMNodeInserted', findH3);
将目标URL的权限添加到清单文件
{
---
"permissions": [
"https: //www.google.co.in/*"
]
---
}
参考
是的,我有。现在绝对的问题是,我无法获得页面的任何DOM节点。虽然我添加了run_at:document,但脚本似乎是在加载DOM之前运行的_end@user2086454:您是否向清单添加了权限,共享了相关代码,这将非常有用。谢谢。我自己也弄明白了原因。我使用windows.onload来实现这一点,但我认为您的解决方案要好得多。但是这里出现了一个新问题:现在我可以获取DOM元素了,我已经将文本发出了警报。但我无法为它们指定样式属性。例如,我写了$'h3.r'。css'background-color','red',什么都没发生。我已经解决了这个问题。似乎您应该先删除扩展,然后重新安装它,而不仅仅是刷新它。我不知道为什么,但它是有效的。重新加载并不那么漂亮:)