2014-10-30 4 views
0

Привет, ребята, я новичок в развитии расширения chrome. Я решил сделать расширение chrome, которое так же, как и менеджер загрузки. Я пытаюсь добавить функцию, например, когда элемент загрузки закончен, звук должен воспроизводиться. Так что я попытался исследовать об этом и узнал 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. Событие не является функцией, которая будет выполняться (например, onclick в HTML-элементе), это объект с методом addListener для прикрепления обработчиков.

Собираем вместе, и взглянуть на chrome.downloads API, вам это нужно:

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

хорошо я добавил код, но оно не кажется, работает – lovemysql

+0

Это не очень описательный проблемы. – Xan

+0

Смотрите, я добавил код, который вы предоставили, и я добавил аудио и некоторый код, чтобы воспроизвести его .. но когда элемент закончил загрузку, он не произвел никакого звука. Здесь есть отредактированный кодhttp: //pastebin.com/9wnQD5eq – lovemysql

Смежные вопросы