嘿,伙计们是Chrome扩展开发的新手。我决定制作一个与下载管理器相同的chrome扩展。我正在尝试添加一个功能,例如下载项目完成时必须播放音频。所以我尝试过研究这个并发现了onCreated
事件。我认为这就是我想要的......
所以我尝试了像
这样的代码DownloadItem.prototype.onCreated = function() {
if (this.state == 'complete') {
var c = new Audio('Link to an audio source');
c.play();
}
但它没有做任何事情。在项目下载完毕后我无法听到声音。
这是我的manifest.json。
根据编辑..
在音频中起作用的主要代码是
if (chrome.downloads) {
DownloadManager.loadItems();
chrome.downloads.onCreated.addListener(function(item) {
DownloadManager.getOrCreate(item);
DownloadManager.showNew();
DownloadManager.startPollingProgress();
});
chrome.downloads.onChanged.addListener(function(delta) {
var item = DownloadManager.getItem(delta.id);
if (item) {
item.onChanged(delta);
}
});
chrome.downloads.onErased.addListener(function(id) {
var item = DownloadManager.getItem(id);
if (!item) {
return;
}
item.onErased();
DownloadManager.loadItems();
});
chrome.downloads.onChanged.addListener(function(delta) {
if (delta.state.current == "complete") {
var c = new Audio('http://www.html5rocks.com/en/tutorials/audio/quick/test.mp3');
c.play();
}
});
{"name": "__MSG_extName__",
"version": "0.3",
"manifest_version": 2,
"description": "__MSG_extDesc__",
"icons": {"128": "icon128.png"},
"browser_action": {
"default_icon": {
"19": "icon19.png",
"38": "icon38.png"},
"default_title": "__MSG_extName__",
"default_popup": "popup.html"},
"background": {"persistent": false, "scripts": ["background.js"]},
"default_locale": "en",
"optional_permissions": ["management"],
"permissions": ["downloads", "downloads.open", "downloads.shelf", "notifications"]}
可以找到整个代码here
答案 0 :(得分:0)
首先,这是一个错误的事件。显然应该在创建下载时触发onCreated
,因此保证不完成。它不会再次开火了。
接下来,您使用Chrome API events错误。
它们未附加到特定DownloadItem
,但会在全球范围内发送,即chrome.downloads.onCreated
。
事件不是要执行的函数(如HTML元素上的onclick
),它是一个带有方法addListener
的对象来附加处理程序。
把它放在一起,然后看看chrome.downloads
API,你需要这个:
chrome.downloads.onChanged.addListener(function(delta) {
if (delta.state.current == "complete") {
// Play sound
}
});