Question

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.

Was it helpful?

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.

OTHER TIPS

Use require () method of RequireJS to load a module. In the callback write your code what need. Note that parameter of function is a array contains paths that loads dependencies

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


require(['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");
    });


});
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top