Javascript chrome扩展插件';s的内容脚本在google、youtube页面中不起作用

Javascript chrome扩展插件';s的内容脚本在google、youtube页面中不起作用,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在尝试创建一个chrome扩展。当用户单击我的扩展名图标(browserAction)时,内容脚本会在打开的页面(当前选项卡)的正文中附加一个额外的div。除了谷歌的搜索页面和youtube,它在所有网站上都能正常工作。我没有收到任何错误信息或任何东西。它根本不会给出任何回应 这是我在content.js中的代码: alert('sdsd'); $('body').append("<div id='popup'>My extension name</div>");

我正在尝试创建一个chrome扩展。当用户单击我的扩展名图标(browserAction)时,内容脚本会在打开的页面(当前选项卡)的正文中附加一个额外的div。除了谷歌的搜索页面和youtube,它在所有网站上都能正常工作。我没有收到任何错误信息或任何东西。它根本不会给出任何回应

这是我在content.js中的代码:

alert('sdsd');
$('body').append("<div id='popup'>My extension name</div>");
background.js

chrome.browserAction.onClicked.addListener(function(tab){
chrome.tabs.executeScript(null,{file:"jquery.min.js"},function(){
    chrome.tabs.executeScript(null,{file:"content.js"});
});

}))

在Youtube的页面中,$被覆盖,而不是jQuery。它是

bound: function ()
{
    return document.getElementById.apply(document, arguments)
}
因此,您的代码会出现异常,因为
document.getElementById('body')
未定义的

你应该试试使用

编辑:

为什么不简单地在
content\u脚本中列出
jQuery.min.js
content.js
,而不是以编程方式注入它们呢。这将避免冲突

编辑2:

既然您使用了内容脚本,那么应该使用从
background.js
向内容脚本发送显示警报的指令

编辑3:

另一种解决方案是使用编程注入(正如您最初所做的那样),而不是使用jquery,
$('body').append(“我的扩展名”)正在以香草JS翻译为

var div = document.createElement('div');
div.id = 'popup';
document.body.appendChild(div);
document.getElementById('popup').innerHTML = "My extension name"​;​

但是它通常更干净(并且需要更少的权限)以避免程序注入。

我尝试了jQuery.noConflict();但是没有用。还有,为什么简单的js警报不起作用?您是如何执行脚本的?你在注射吗?您能在问题中编写清单吗?现在jquery.min.js和content.js都列在清单的content\u scripts部分下。但是现在content.js是在页面加载时执行的。如何编辑background.js以使content.js仅在onClicked事件上运行?你能帮我一下吗?DOM仍然可以通过内容脚本访问。参见编辑(未测试)。我不知道我的陈述是否不够清楚。我希望在调用background.js的onClicked eventHandler时运行警报和append。也就是说,当用户单击扩展图标时。不在身体上点击。我希望这个电话应该放在这里的某个地方:chrome.browserAction.onClicked.addListener。不是吗?
var div = document.createElement('div');
div.id = 'popup';
document.body.appendChild(div);
document.getElementById('popup').innerHTML = "My extension name"​;​