Javascript google chrome扩展jquery未加载
在下面的google chrome扩展文件中,为什么我不能在myscript.js文件中使用jquery脚本,如果jquery没有加载到myscript.js文件中,那么在清单文件中应该做哪些更改才能在myscript.js中使用jqueryJavascript google chrome扩展jquery未加载,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,在下面的google chrome扩展文件中,为什么我不能在myscript.js文件中使用jquery脚本,如果jquery没有加载到myscript.js文件中,那么在清单文件中应该做哪些更改才能在myscript.js中使用jquery alert($("#extension-command-list").val()); //undefined alert($("#extension-command-list").html()); //undefined $(documen
alert($("#extension-command-list").val()); //undefined
alert($("#extension-command-list").html()); //undefined
$(document).ready(function() {
alert("hello world"); //not seen
});
Manifest.json
{
"manifest_version": 2,
"name": "One-click Kittens",
"description": "This extension demonstrates a browser action with kittens.",
"version": "1.0",
"background": { "scripts": ["jquery-1.9.1.min.js","myscript.js"] },
"permissions": [
"tabs", "http://*/*"
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
myscript.js
alert($("#extension-command-list").val()); //undefined
alert($("#extension-command-list").html()); //undefined
$(document).ready(function() {
alert("hello world"); //not seen
});
编辑:
您得到未定义的
的原因是因为您没有指定背景页
所以。。Chrome生成的背景页面,看起来就像
<html>
<head></head>
<body>
<script src="jquery-1.9.1.min.js"></script>
<script src="myscript.js"></script>
</body>
</html>
正如您所看到的,没有任何可以选择的元素,这就是为什么您的第一个太警报
返回未定义
无论如何,也应该显示警报(“hello world”)
,因为应该以任何方式触发DOMContentLoaded
或类似命令
您是否希望选择正在访问的站点的元素
如果是这样,您应该将myscript.js
放在一个页面中,而不是背景页面中。
在那里,您可以访问站点的DOM
所以问题是,你在忙什么
如果你真的想在背景页面中选择元素,你必须指定一个,
查看该网站,您会发现它非常简单:
{
“名称”:“我的分机”,
…
“背景”:{
“页面”:“background.html”
},
…
}
编辑:
- “默认弹出窗口”:“popup.html”
指的是一个。使用浏览器操作
[…]在地址栏右侧的Google Chrome主工具栏中放置图标。除了图标,浏览器操作还可以有工具提示、徽章和弹出窗口
所以
如果浏览器操作具有弹出窗口,则当用户单击图标时会出现弹出窗口。弹出窗口可以包含您喜欢的任何HTML内容,并自动调整大小以适应其内容。
要将弹出窗口添加到浏览器操作,请创建包含弹出窗口内容的HTML文件。在清单中浏览器操作的默认弹出字段中指定HTML文件,或调用setPopup方法
- 背景“{…}”
扩展的一个常见需求是使用一个长时间运行的脚本来管理某些任务或状态。救援背景页。
正如架构概述所解释的,后台页面是在扩展过程中运行的HTML页面。它在扩展的生命周期内存在,并且一次只有一个实例处于活动状态
还有一个后台脚本访问Chrome扩展Api的所有部分。Chrome.*
如果您分别请求了权限
现在,让我们假设,您想用一些功能扩展chrome的ContextMenu
要做到这一点,您首先必须在背景页面中创建一个上下文内容。
就像你的背景页面一次只运行一个实例一样,在扩展的生命周期中,你的上下文内容也应该只有一个实例,它在扩展运行时创建,并在扩展的生存期内保持
现在假设您希望在其中一个菜单项中显示您正在访问的页面的当前选定文本
为此,您需要访问chrome.contextMenus
API方法,但不允许contentscript使用此方法
要使此功能正常运行,您需要通过chrome.extension.sendMessage等
然后,在背景页面中,您可以更新现有的上下文内容,以显示所选文本
sry我现在想不出比这更好的例子了事实上这应该行得通。(我刚刚用您的文件创建了一个新的扩展名,收到了hello world
警报)必须有其他错误是的,它工作..但当我做任何选择器并在任何页面显示未定义时发出警报..知道为什么吗?是的,我想选择我访问的站点元素…请查看清单文件的编辑,并告诉我是否正确..现在在编辑更改后,我看不到就绪函数alert()@Rajeev你想让它匹配所有URL吗?如果是这样,请尝试将您的匹配更改为:“matches”:[“”],
如果不是这样,您访问的页面是否使用了https
方案?我的错误,我让它工作了..但是如果您能告诉我最后一件事..那么我只会使用html页面来正确显示结果..很高兴听到这一点,但您能重新表述最后一个问题吗,我并没有真正理解“所以我会使用html页面来显示正确的结果…”部分