2009-08-21 18 views
0

私は問題について研究しており、通常のJavaScriptテクニックで解決できませんでした。アプリケーションはJavaScriptファイルを動的に再読み込みできません

私のアプリケーションは、ユーザーがシステムのセクションをロードするたびに、JavaScriptファイルをロード(挿入)します。問題は、私がアンロード(取り外し)しようとするときに来るものです。

セクションA(スクリプトA 'を読み込む)、セクションB(スクリプトB'を読み込む)を読み込み、セクションAを再度読み込み、スクリプトA 'のコードが実行されないことに気付きましたそれで、そこのすべてのイベントの登録が行われない、私は起こりたいと思う。 (私が気づいていないような特別な種類のクリーニングが必要かもしれません)

アイデアはありますか?私はただの理にかなって言ったら...

例:

1 - ユーザーは、「製品」に関連した「製品」

2 - UIとJavaScriptファイルの両方が

をロードされますセクションに入ります
2.1- Products.js is now inserted in the <head> 

2.2- Products.js code gets parsed and executed 

3 - ユーザーは、セクション「顧客

3.1 - Products.js reference is removed from the <head> 

4-入る両UI A ND「クライアントのGETに関連付けられたJavaScriptファイルは

4.1- Clients.js is now inserted in the <head> 

4.2- Clients.js code gets parsed and executed 

5ユーザーは、セクションに入るロード '製品'

5.1 - Clients.js reference is removed from the <head> 

5,6 UIと '製品' に関連したJavaScriptファイルの両方がロードされます

6.1- Products.js is now inserted in the <head> 

6.2- Products.js code **DOES NOT** get parsed nor executed 

ありがとうございます。

P .:アプリケーションのこの部分にフレームワークは使用されていません。

+0

これはどのブラウザで表示されますか? –

+0

それらのすべて。私はクロスブラウジングの問題ではないと思います。 – leomdg

答えて

1

本当に答えはありますが、javascriptファイルの本体ではなく、実際に作業を行うinit()メソッドに頼ることができます。これはどんな速度でも、JavaScriptを再挿入すると実行が邪魔になるようになるので、よりきれいです。

+0

実際には、アプリケーションはパッケージに基づいています。あなたが指摘したように、init()メソッドを含めると、そのクラスが表すクラスのコンストラクタとして動作し、クラスを持たない環境にクラスを持ちます。 私が正しく理解していれば、ファイルを「読み込む」たびにアプリケーションがその「コンストラクタ」を実行することを提案しているのでしょうか? – leomdg

+0

うん。スクリプトタグを「動的に」挿入するとブラウザに「読み込み」されたことがありますが、これが失敗しても、「あなた」がとにかく依存する一種の「コンストラクタ」を作ることは感覚的です。 –

+0

このソリューションと、ここでは好ましい回答として選択したものの合計:http://stackoverflow.com/questions/1704876/re-executing-javascript-filesは問題を解決したようです。 – leomdg

0

YUIは、ライブラリをJavaScriptから動的にロードするための特別なクラスを提供しますが、独自のユーザー定義のクラスをロードできます。

は、ここでは、彼らの歴史マネージャの使用(私はあなたがないだろうがある)、これはあなたがその場でJavaScriptファイルをロードし、再ロードできるようにする必要がありますをしない限り、リンクYUI LOADER

です。

+0

ゾイドバーグ博士、ありがとうございました。私は、ゾイドバーグ、heh ..私はYUIのツールについて知っています。実際には、彼らは存在の中で最高のフレームワークとさまざまなツールを持っていると思います。 ポストスクリプト(PS)に記載されているように、アプリケーションのこの部分はフレームワークを使用していないため、私はこれを意図していませんが、あなたの答えはまだ有効です。 YUIローダー;)。 – leomdg

関連する問題