2012-03-06 11 views
5

Estoy intentando reproducir el pitido de notificación (o mencionar un pitido) en el chat SO utilizando una extensión de Chrome, pero no puedo hacerlo bien (si es posible). He intentado el siguiente código:Reproducción del pitido en el chat SO

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

pero me da el siguiente error:

Uncaught TypeError: Object [object Object] has no method 'jPlayer'

¿Hay una manera de utilizar el SO chatear 'módulo' sonido/reproductor para reproducir la señal @ mención?

ACTUALIZACIÓN

sé que puedo configurar mi propio 'reproductor de audio', pero quiero utilizar el reproductor de audio que se utiliza en el chat aquí en la SO y quiero utilizar la señal de notificación.

He cargado mi código completo en un GitHub gist que es parte de this project. La línea donde intento llamar al reproductor de audio es 224.

+0

En qué archivo le has puesto este código? Supongo que el código no se está ejecutando en la página, sino más bien la página de fondo de la extensión. – mowwwalker

+0

@Walkerneo Estoy ejecutando esto en uno de los archivos JS "content_scripts". – PeeHaa

+0

@Walkerneo Agregué un enlace al proyecto para que pueda verificarlo. – PeeHaa

Respuesta

3

Supongo que es una cosa de sandbox, no se te permite ejecutar scripts desde la página, así que supongo que los complementos cuentan.
la que se conoce que es sólo una cuestión de jugar fuera de la caja de arena ....

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/*" 
    ] 
} 

Se puede ver un poco de materia en la comunicación con la página de aquí ... http://code.google.com/chrome/extensions/content_scripts.html

3

¿Por qué no:

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

Chrome cuenta con el apoyo de audio (versiones recientes de todos modos), por lo que este debe estar muy bien. Esto es lo que uso en mi extensión.

+0

Justo lo suficiente, esa es su prerrogativa. Pero de esta manera funciona, y es simple. ¿Tiene un enlace a cualquier documentación para este módulo de chat SO para que pueda tratar de ayudar a responder su pregunta? –

+0

He actualizado un enlace en mi pregunta al código completo. No hay documentos para la funcionalidad porque es SO chat interno. – PeeHaa

+2

Para ampliar este ... ¿qué tal ... 'nuevo audio (chrome.extension.getURL (" so.mp3 ")). Play();' y so.mp3 proviene de http: //or.cdn. sstatic.net/chat/so.mp3 – PAEz

Cuestiones relacionadas