2014-10-30 275 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