2010-11-18 16 views
0

Webアプリケーションに問題があります。そのUIはウィンドウベースなので、同時に多数のウィンドウを開くことができます。これらのウィンドウはAJAX呼び出しでロードされるDIVです。すべてのウィンドウの内容が一意であれば、すべてうまく動作します。HTML + Jquery Webアプリケーション(Windows版) - IDと重複したJavascriptを複製する

ただし、同じウィンドウを2つ以上同時に開く必要があることがあります。両方のウィンドウにロードされたAJAXコンテンツには、同じHTML ID属性、同じJS関数、およびこの特定のウィンドウに使用される同じグローバル変数があります。明らかにすべてが壊れます。

私はこの問題を解決する方法を探しています。唯一のことは、ID属性を使用して変更し、代わりにクラスを使用することです。 JS関数は、起動時に全ユーザインタフェースがロードされたときに共有してロードすることができます。しかし、同じ名前のグローバル変数はどうですか?

ご意見をいただければ幸いです。

答えて

0

HTML ID属性は、ドキュメント全体のコンテキストで一意でなければなりません。あなたはそれをハックするか再考することができます。

再考する場合は、グローバル変数も考慮してください。見直しで

ヘルプ:あなたがオブジェクトを認識するためのIDを使用する場合は、このようなパターンを使用することができます:wはちょうど文字です

w11-22222

(IDは数字で始めるべきではありませんが)、 11はウィンドウナンバー、 - は - ;)、22222はあなたが今使ったIDです。

古いIDを必要とするとき、それはただの思考だけid.substring(4)

グローバル変数などのウィンドウに関する情報を含む配列/オブジェクトを保持するグローバルオブジェクトに置き換える必要があり

です:

ウインドウを取得するためにIDを必要としない方法で、インターフェースをエンジニアリングすることは可能です。ウィンドウを作成するとき:

var $awindow=$('<div></div>')...//build upon it with attr and append 
$awindow.appendTo('body'); 
AwesomeGlobalObjectToControllStuff.rememberWindow('the key to find it',$awindow); 

そして、そのオブジェクトを使用して、$ awindowをそのストレージから戻します。

+0

お返事ありがとうございました。私は同様のことをやろうと考えていたので、私の考えを確認しました。ああ、多くの厄介な作業が先行しています:-( – Frodik

+0

アプリケーションによっては、ユニークなIDを保証できる場所が1つしかないかもしれませんが、私はそのアプリを知らないので一般的な解決策です。 – naugtur

関連する問題