I'我试图让jquery在我的chrome扩展的background.js中工作,结果成功了;不起作用.为什么?
I'm trying to get jquery working in the background.js of my chrome extension and it won't work. why?
我读过很多关于jQuery和后台页面的堆栈溢出问题,只是不理解参与规则。我不知道他们是如何互动的。有人能告诉我为什么这个代码不起作用吗?
manifest.json
{
"name": "test 1",
"description": "testing jquery",
"version": "2.0",
"permissions": [
"activeTab"
],
"background": {
"scripts": [ "jquery-2.1.1.js", "background.js"],
"persistent": false
},
"browser_action": {
"default_title": "test"
},
"manifest_version": 2
}
当我上传扩展时,我不会忘记包含jQuery文件
background.js
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(
{ code: 'console.log("this works");'},
{ code: '$( document ).ready(function() { console.log( "but this does not work :(" ); });' }
);
});
请记住,我熟悉如何使用内容脚本使用jQuery,但这些脚本的问题是
chrome.******
命令不起作用。
请帮忙!
您正在正确地将jQuery加载到后台页面中。如果您在它的代码中使用$(document).ready()
,它就会起作用。
问题是,当您使用executeScript
时,您指定的代码不会在与background.js
相同的上下文中执行。创建了一个全新的JS上下文,并将其附加到有问题的选项卡上,而该上下文中没有jQuery(顺便说一句,即使选项卡的上下文本身也有jQuery,请参阅孤立上下文)。
此外,您打错了executeScript
。其论点是:
- 整数(可选)
tabId
- 对象
details
- 功能(可选)
callback
你用两个对象来调用它;它不是那样工作的。
因此,要修复此问题,您需要首先在执行上下文中注入jQuery,然后再注入代码。您需要连锁2个调用,以确保它们以正确的顺序执行。
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(
tab.id,
{ file: 'jquery-2.1.1.js' },
function() {
chrome.tabs.executeScript(
tab.id,
{ code: '$( document ).ready(function() { console.log( "This works now" ); });' }
);
}
);
});
相关文章:
- 函数hide()、prev()、show()被组装以获得所需的结果,但无法理解其工作原理
- 无法从IE中的data.responseText获取结果,但在其他浏览器中工作
- Javascript表排序工作得很好,但对所有索引进行迭代会得到不同的结果
- Javascript 不工作,结果打印后浏览器仍在加载
- 当我在Javascript中的.exec()结果上使用.index时,它是如何工作的
- 序列化方向结果到 JSON 发送到我的网络服务无法正常工作
- 异步功能在预期结果时停止工作
- 通过输入键(不起作用)或搜索按钮(工作)查询结果
- 如果我有两个选项的代码,单选按钮的结果将无法正常工作
- 谷歌博主的编号页面导航无法在搜索结果页上工作
- jquery插件 - 工作,但在调试时,结果甚至在到达该行之前就显示出来了
- 将结果从.html(或innerHtml)输入到inArray并使其工作
- I'我试图让jquery在我的chrome扩展的background.js中工作,结果成功了;不起作用.为什么?
- 2个SQL查询.两者独立工作.当我把它们放在一起时,第一个查询的结果变量是空的.为什么?
- Meteor findOne查询在一个模板助手中返回未定义的结果.在其他模板助手中,同样的查询也能很好地工作
- 显示返回结果计数的函数是'没有按预期工作
- .find("tagname")空结果(偶尔在Chrome中工作)
- 调用ASP中控制器的ActionMethod.. NET MVC从Javascript,结果在Excel工作表保存
- 数据显示更新数据结果,但更新数据结果是不工作的PHP
- PHP正则表达式不工作,返回主题字符串而不是正则表达式结果