Воспроизведение звукового сигнала в SO чате - PullRequest
5 голосов
/ 07 марта 2012

Я пытаюсь воспроизвести звуковой сигнал уведомления (или упомянуть звуковой сигнал) в чате SO, используя расширение Chrome, но не могу сделать это правильно (если это вообще возможно).Я пробовал следующий код:

this.notify = function () {
  $("#jplayer").jPlayer('play', 0);
}

Но я получаю следующую ошибку:

Uncaught TypeError: Object [object Object] не имеет метода 'jPlayer'

Есть ли способ использовать звуковой модуль чата SO Player для воспроизведения звукового сигнала @mention?

ОБНОВЛЕНИЕ

Я знаю, что могунастроить свой собственный «аудиоплеер», но я хочу использовать аудиоплеер, который используется в чате здесь, на SO, и я хочу использовать звуковой сигнал уведомления.

Я загрузил свой полный код в GitHub gist , который является частью этого проекта .Строка, где я пытаюсь вызвать аудиоплеер: 224 .

Ответы [ 2 ]

3 голосов
/ 09 марта 2012

Думаю, это песочница, вам не разрешено выполнять скрипты со страницы, поэтому я думаю, что количество плагинов равно.
Это известно, это просто вопрос игры вне песочницы ....

script.js

var customEvent = document.createEvent('Event');
customEvent.initEvent('JPlayerNotify', true, true);

function notify() {
    document.getElementById('communicationDIV').innerText='notify';
    document.getElementById('communicationDIV').dispatchEvent(customEvent);
}

// Utitlity function to append some js into the page, so it runs in the context of the page
function appendScript(file) {
    var script = document.createElement('script');
    script.setAttribute("type", "application/javascript");
    script.setAttribute("src", chrome.extension.getURL(file));
    document.head.appendChild(script);
}

appendScript("JPlayer.js");

// had to wait for a bit for the page to be ready (dialup and all), you wont need to do the setTimeout
setTimeout("notify()",3500);

JPlayer.js

var notify_node = document.createElement('div');
notify_node.id = 'communicationDIV';
document.documentElement.appendChild(notify_node);

notify_node.addEventListener('JPlayerNotify', function() {
  var eventData = notify_node.innerText;
  if (eventData=='notify'){
    $("#jplayer").jPlayer('play', 0);
  }
});

manifest.json

{
  "name": "JPlayerNotify",
  "version": "0.5.0",
  "description": "JPlayerNotify",
  "content_scripts" : [
    {
      "matches": ["http://chat.stackoverflow.com/rooms/*"],
      "js" : ["script.js"],
      "run_at" : "document_idle",
      "all_frames" : false
    }
  ],
  "permissions": [
    "http://stackoverflow.com/*",
    "https://stackoverflow.com/*",
    "http://*.stackoverflow.com/*",
    "https://*.stackoverflow.com/*"
  ]
}

Вы можете посмотреть кое-что по связи со страницей здесь ... http://code.google.com/chrome/extensions/content_scripts.html

3 голосов
/ 07 марта 2012

Почему бы просто:

new Audio('beep.wav').play();

В Chrome есть поддержка аудио (в любом случае, последние версии), так что все должно быть в порядке.Это то, что я использую в своем расширении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...