Search code examples
javascripthtmlflashrequirejssoundmanager2

soundmanager2.js + require.js not working with firefox + adblock plus


can't get the following test to work with Firefox 22.0 when AdBlock Plus is enabled. Works just fine on Chrome + when I've disabled adblock. It also works when I'm loading the scripts with script tags instead of requirejs.

./index.html:

<!DOCTYPE html>
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">

<link rel="stylesheet" type="text/css" href="css/main.css"/>
<!--<link rel="icon" type="image/png" href="img/icon.png"/>-->

<!--<script  src="js/lib/jquery.js"></script>-->

<script data-main="js/main" src ="require.js"></script>
<!--
<script src="js/lib/soundmanager2.js"></script>
<script src="js/test.js"></script>
-->

<title></title>
</head>


<body>

<div id="stop" style="cursor:pointer;"> stop</div>

</body>


</html>

./js/main.js:

require.config({
    paths:{
        jquery:"lib/jquery",
        underscore:"lib/underscore",
        soundmanager2:"lib/soundmanager2"
        /*backbone:"lib/backbone",
        detectmobilebrowser:"lib/detectmobilebrowser"*/
    },
    shim: {
        'underscore': {
            exports: '_'
        },
        'soundmanager2':{
            exports:"soundManager"
        }
    }
});


define(['jquery','underscore',"soundmanager2"],
function($,_,soundManager){    
alert("hep");
    window.soundManager=soundManager;
    soundManager.setup({
        url: 'swf',
        useHTML5Audio:true,
        preferFlash: false, // prefer 100% HTML5 mode, where both supported
        onready: function() {

            alert('SM2 ready!');
            /*
            soundManager.createSound({
                id: 'mySound',
                url: './test/test.mp3',
                autoLoad: true,
                autoPlay: false,
                onload: function() {
                    soundManager.play('mySound');
                },
                volume: 50
            });
            */


        },
        ontimeout: function() {
            alert('SM2 init failed!');
        },
        defaultOptions: {
            // set global default volume for all sound objects
            volume: 100
        }
    });

    $("#stop").on("click",function(){
        alert("stop");
        soundManager.stop("mySound");
    });

    return soundManager;
});

No errors or anything in the console, no alerts after that initial 'hep!' one.


Solution

  • Classic pattern, fight with some issue for hours, give up and ask for help, find solution immediately after posting.

    added

    soundManager.beginDelayedInit();
    

    after soundManager.setup() and it works now.