-1

私は JavaScript についてあまり知りませんし、JavaScript を知っている友人もいません :( そのため、stackoverflow コミュニティに再度助けを求めています。スクリプト用の新しいテンプレートを手に入れましたが、問題はいくつかあることです。私のスクリプトがテンプレートからのいくつかのjsで動作するために必要なprototype.jsでの競合があり、この問題を解決する方法がわかりません。コメントjs、メインjs、およびスクリプトがプロトタイプjsなしでは正しく動作しないためです。誰かがスクリプトを調べて、それらをマージするための解決策を提供する時間があるかどうかはわかりません。大きなスクリプトであるため、最後に試してみます。

いくつかの場所にスクリプトをアップロードし、ここにリンクを配置しました

pastebin.com/n5dnr6i7 here is the main.js required for template

pastebin.com/YisnTuBM comments.js recuired for template

pastebin.com/Cibn1NA2 prototype.js required for main script  

プロトタイプをロードすると、コメントとメインが正しく機能しません

前もって感謝します!

編集:Javaでこれを投稿して申し訳ありません。訂正していただきありがとうございます

編集 2: 問題は、Web スクリプトが IonCube で暗号化されており、テンプレートの html ファイルにのみアクセスできることです。テンプレートは、使用している Web スクリプトの変更/クラック バージョン用であるため、少し複雑です。ビデオ チューブ スクリプトと、たとえば、私が持っている元の Web スクリプトは、video.html に含まれている comments.html を使用しています。クラック/変更は異なり、新しい video.html テンプレートに古い comments.html ファイルを含める必要がありました。 jquery-1.9.1 を使用している場合、コメント エリア ボックスはクリックするとスライド ダウンしますが、プロトタイプを使用するとビデオにコメントできません。私はそれをクリックしましたが、それらをマージする方法がわかりません

4

1 に答える 1

0

これらのファイルを 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
于 2013-04-05T17:57:29.037 に答える