これらのファイルを jsfiddleに追加しましたが、Prototype も必要ですか? 私はそれをコメントアウトし、jQuery に置き換えました (結合された [メイン] ファイルと同様に、コメント ファイルはそれを必要とするようです)。
これを行った後、ページの読み込み時にエラーは発生しません。
<!-- prototype -->
<!--script src="http://pastebin.com/raw.php?i=Cibn1NA2"></script-->
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<!--script>jQuery.noConflict();</script-->
<!-- comments -->
<script src="http://pastebin.com/raw.php?i=YisnTuBM"></script>
<!-- main = Modernizr + extras -->
<script src="http://pastebin.com/raw.php?i=n5dnr6i7"></script>
コメントの編集: jQuery の使用を示す2 番目のフィドルnoConflict()
:
セットアップ - 両方のスクリプト タグをコメント解除したままにするか、どちらか一方にコメントを付けて、どのエラーが発生するかを確認してください。
テストでは、アクティブなのバージョンを確認するためにaddClass
、jQuery の機能と Prototype の機能を使用します。その時点でどちらがアクティブであるかに応じて、いずれかの方法が失敗します。addClassName
$
$
<!-- Comment one of these script tags, or leave both uncommented for noConflict mode -->
<!-- jQuery must come second in order to properly use noConflict -->
<script src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js"></script>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
テスト:
// local var for jQuery - this might be undefined if jQuery not imported
var jQuery = window["jQuery"];
// if jQuery exists, put into noConflict mode - i.e. return jQuery $ to Prototype $
if (jQuery) jQuery.noConflict();
try {
// addClassName is prototype only, not jquery
$("output").addClassName("prototype");
setOutput("$.addClassName ok");
} catch (e) {
setOutput("Prototype > $.addClassName error: " + e);
}
try {
// addClass is jquery only, not prototype
$("output").addClass("jquery");
setOutput("$.addClass ok");
} catch (e) {
setOutput("jQuery > $.addClass error: " + e);
}
try {
// try using jQuery with the 'full' jQuery name
jQuery("output").addClass("jquery");
setOutput("jQuery.addClass ok");
} catch (e) {
setOutput("jQuery > jQuery.addClass error: " + e);
}
// wrap the code that needs $ to be jQuery $ in a function.
// and pass in jQuery to be aliased as $ within the function.
(function($) {
try {
$("output").addClass("jquery");
setOutput("$.addClass ok when wrapped");
} catch (e) {
setOutput("jQuery > wrapped $.addClass error: " + e);
}
}(jQuery));
Prototype と jQuery の両方が含まれている場合の出力例:
$.addClassName ok
jQuery > $.addClass error: TypeError: $(...).addClass is not a function
jQuery.addClass ok
$.addClass ok when wrapped