2013-07-28 3 views
0

AdBlock Plus를 사용하는 경우 Firefox 22.0에서 작동하려면 다음 테스트를 수행 할 수 없습니다. Adblock을 사용 중지하면 Chrome +에서 정상적으로 작동합니다. requirejs 대신 script 태그를 사용하여 스크립트를로드 할 때도 작동합니다.soundmanager2.js + require.js가 firefox + adblock plus와 함께 작동하지 않음

./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; 
}); 

없음 오류 또는 아무것도없이 경고가 초기 이후 하나.

답변

0

고전적인 패턴으로 몇 시간 동안 몇 가지 문제를 해결하고 포기하고 도움을 청하고 게시 직후 해결책을 찾으십시오.

는 soundManager.setup() 후

soundManager.beginDelayedInit(); 

를 추가하고 그것을 작동합니다.

0

RequireJS의 require() 메소드를 사용하여 모듈을로드하십시오. 콜백에서 필요한 코드를 작성하십시오. 함수의 매개 변수는 배열에 종속성을로드하는 경로가 포함되어 있습니다.

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"); 
    }); 


});