2011-01-06 25 views
0

これは一般的な質問です。私は同じページで2回使用したいjavascriptを持っています。私がそれらの1つと対話するときはいつでも、それはもう1つを変えることは明らかです。私はそれらのメソッド名の名前を変更することでこれを解決することができますが、私はそれにアクセスすることはできません。 2人の間で衝突することなく両者を動作させる方法はありますか?同じページで2つの同一のJavaScriptを実行

私はそれらをそれぞれ別の名前のjavascriptでラップすることを考えましたが、私はここにこだわっています。 アイデア

+1

達成したいことに関する詳細が少なすぎます。このJSをどのように2回実行するかを説明するサンプルコードをいくつかご用意ください。 src属性のスクリプトタグ経由ですか? – glmxndr

+0

はい、scriptタグとsrc属性conataining urlを使用しています。 – Assaf

+0

あなたが私にグローバル変数を悪用しているような音は、いくつかのコードを投稿してください。 –

答えて

0

これは設計上の問題です。

これに対処する最善の方法は、オブジェクト指向のコードをJSクラスで設計することです(JSにはクラスはありませんが、すべての目的と目的のために多くの人が教えてくれます)。例えば

// Define the class 
function myobject() { 

    // Variables belonging to this class 
    this.value1 = 0; 
    this.value2 = 0; 
    this.total = 0; 

    // A function within this class 
    this.addNumbers = function(){ 
     this.total = this.value1 + this.value2; 
    } 
} 

// Create two instances of the class 
var mything = new myobject(); 
var mything2 = new myobject(); 

// Set variables within the instances 
mything.value1 = 5; 
mything2.value1 = 10; 

// Run the function 
mything.addNumbers(); 
mything2.addNumbers(); 

// Show the result 
alert(mything.total); 
alert(mything2.total); 

あなたは今、お互いに競合することはありませんMyObjectにの2つのインスタンスを持っています。このクラスは、その内部に関数を持つこともできます。

あなたのケースでは、クラス内にあるJSをラップし、そのクラスのインスタンスを作成する価値があります。

+0

働くことができます。 @asaf:スクリプトにアクセスできない場合は、ローカルコピーを作成して調整して読み込むことはできませんか? – DanMan

0
document.scripts[Name - or - index].method() 

または 別のドキュメントにロードしてください。つまり、iframeドキュメントに2番目のスクリプトを読み込んで使用します。

関連する問題