RequireJS を使用して jQuery (jQuery が既に初期化されている可能性のある制御されていない環境で動作するように開発したモジュール) をロードしたいのですが、異なるバージョンの jQuery が必要な場合にいくつかの問題があります。結果は期待できません。require 関数ブロック内の jQuery のバージョンはランダムです。なにが問題ですか?問題を説明するコードは次のとおりです。
<!DOCTYPE html>
<html>
<head>
<script data-main="scripts/main" src="http://ajax.cdnjs.com/ajax/libs/require.js/0.24.0/require.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
</head>
<body>
<script>
console.log(jQuery.fn.jquery);
setTimeout(function(){
require(["http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"], function() {
console.log($.fn.jquery);
});
},1000);
setTimeout(function(){
require(["http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"], function() {
console.log($.fn.jquery);
});
},2000);
setTimeout(function(){
require(["http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.js"], function() {
console.log($.fn.jquery);
});
},3000);
setTimeout(function(){
require(["http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"], function() {
console.log($.fn.jquery);
});
},4000);
setTimeout(function(){
require(["http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"], function() {
console.log($.fn.jquery);
});
},5000);
setTimeout(function(){
require(["http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"], function() {
console.log($.fn.jquery);
});
},6000);
setTimeout(function(){
require(["http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"], function() {
console.log($.fn.jquery);
});
},7000);
setTimeout(function(){
require(["http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.js"], function() {
console.log($.fn.jquery);
});
},8000);
setTimeout(function(){
require(["http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"], function() {
console.log($.fn.jquery);
});
},9000);
</script>
</body>
</html>
結果は次のとおりです。
1.6.2
1.8.0
1.4.4
1.8.0
1.8.0
1.6.2
1.6.2
1.6.2
1.6.2
1.6.2