2014-10-30 282 views
0

嘿,我们是铬扩展开发的新手。我决定做一个与下载管理器相同的扩展。我试图添加一个功能,如下载项目完成时必须播放音频。这就是我一直研究这件事,发现onCreated event.I认为THISIS我所想要的..下载完成后播放声音

这就是我一直喜欢

DownloadItem.prototype.onCreated = function() { 
    if (this.state == 'complete') { 
var c = new Audio('Link to an audio source'); 
c.play(); 
} 

的代码,但它没有做anything.I一时无法在项目完成下载后听到声音。

这是我的manifest.json

按编辑..

主要代码起着音频作用是

popup.js

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

首先,这是一个错误的事件。 onCreated明显应该是在下载时启动创建的,所以确保不是才能完成。它不会再发射。

接下来,您正在使用Chrome API events错误。

  1. 他们没有连接到一个特定DownloadItem,但在全球范围内布控,即chrome.downloads.onCreated

  2. 事件不是要执行的函数(如HTML元素上的onclick),它是一个包含方法addListener的对象,用于附加处理程序。

将其组合在一起,并在chrome.downloads API考虑看看,你需要这样的:

chrome.downloads.onChanged.addListener(function(delta) { 
    if (delta.state.current == "complete") { 
    // Play sound 
    } 
}); 
+0

以及我所添加的代码,但它没有看起来工作 – lovemysql 2014-10-31 12:57:12

+0

这不是很描述的问题。 – Xan 2014-10-31 15:05:11

+0

看到我已经添加了你提供的代码,我已经添加了音频和一些代码来播放它..但是当该项目完成下载时,它不产生任何声音..这里是编辑后的代码http://pastebin.com/9wnQD5eq – lovemysql 2014-10-31 15:43:37