JackW
JackW

Reputation: 999

firefox addon SDK not playing audio using new Audio

I'm developing a firefox extension, and I'd like it to play a notification sound when an event occurs. However, despite following the instructions from Play audio from firefox extension's data directory, the sound doesn't play. It's stored in my data directory. Here is my code:

var pageworker = require ("sdk/page-worker");
let { setTimeout } = require("sdk/timers"); //setTimeout is not enabled by default in ff extensions

function playSound(sound){
  console.log("playing sound: "+sound);
  var soundPlayer = pageworker.Page({
    contentURL: data.url("blank.html"),
    contentScript: "new Audio('notification-1.mp3').play();console.log('the audio did run')",//This is where it should play, but it doesn't, even if I remove the console.log
    //The script does work if I type it into the javascript console, but replace the file name with a file:/// URL
  });
  setTimeout(function(){soundPlayer.destroy();},5000);//destroy the sound player after 5 seconds
}

but although both console.log's are called, no audio ever plays. This is both in the XPI and when using cfx.

Upvotes: 3

Views: 357

Answers (1)

willlma
willlma

Reputation: 7533

As noted in the comments, try using an absolute URL in the contentScript string:

"new Audio("+data.url("notification-1.mp3")+").play();"

Upvotes: 2

Related Questions