7

我想做一个 Chrome 扩展来修改谷歌搜索结果页面。我知道我可以使用内容脚本来做到这一点,因为它有能力做到这一点。但不幸的是它失败了。我写了代码

$('h3.r').append('<b>a</b>')

或其他与 DOM 操作相关的东西,它们都失败了。但如果我只是写

alert('aa')

或者

document.body.style.backgroundColor='green'

, 有用。为什么?顺便说一句,我想进行调试,但是当我打开开发工具时,我找不到我的扩展内容脚本。我可以看到其他扩展的内容脚本。

4

2 回答 2

5

您是否将 jQuery 添加到清单中的 content_scripts 中?

如果你使用 jQuery,你必须manifest.json这样写:

 "content_scripts":[
        {
            "matches":["http://www.google.com/*"],
            "js":["jquery-1.9.1.min.js", "contentscripts.js"]
        }
]

OK,看了谷歌搜索结果页面的页面源码我想我知道问题出在哪里了:

Google 使用 AJAX 加载搜索结果,因此,当您更改查询词并再次搜索时,页面不会刷新,这就是您无法在搜索结果中获取任何 DOM 元素的原因。

这意味着您必须为 DOMNodeInserted 添加一个事件侦听器。

代码是这样的:

function findH3(){
  $('h3.r').append('<b>a</b>')

}

searchResultArea.addEventListener('DOMNodeInserted', findH3);
于 2013-03-01T03:34:40.357 回答
0

将目标 URL 的权限添加到清单文件

{
 ---
    "permissions": [
        "https: //www.google.co.in/*"
    ]
 ---
}

参考

于 2013-03-01T06:33:32.387 回答