2016-08-04 10 views
0

このアプローチが構造的に健全かどうかを知りたいだけでした。ランタイム中に動的に読み込まれるスクリプトでJavaScript関数を上書きする

私はinitでロードされるmain.jsと、実行時に(一度に1つずつ)読み込まれる動的外部スクリプトを持っています。 main.jsにはサーバーから受け取ったメッセージを処理する必要があるたびに呼び出される関数があります。この関数は外部スクリプトのカスタムハンドル関数を呼び出すことができます。これを行うには関数を指定しています新しいスクリプトがロードされるたびにmain.jsの関数を上書きするように、外部スクリプトに同じ名前を付けます。私の試験から

それはいくつかの注意点と、動作しているようですので、私はいくつかの質問を持っている:

はこのような何かを行うには良い方法はありますか?

この方法では何が起こる可能性がありますか?

リフレッシュ/ナビゲーションなしでスクリプトをキャッシュから消去することはできませんが、スクリプトのサイズは比較的小さいので、これは問題にはならないと思います。詳細と

編集:

私は、ナビゲーションは問題外であるので、これは、単一のページ構造を持っている必要があります。私はまた、サーバがメッセージを送信するまで次の "ページ"が何であるかを知らないので、AJAXで実行時にリソースを取得する必要があります。

答えて

0

あなたの主な機能に呼び出しを指定します。

var call=false; 
function onsomething(){ 
//general stuff needed in both 
if(call!=false){ 
call(); 
}else{ 
//original main code 
}} 

そして、単にあなたの後にロードされたjsの中に、この設定:そう、これは念の外部関数が実際に前にロードされるようにすることです

call=myfunction; 
function myfunction(){//new main code} 
+0

OKを私はそれを呼ぶ。 – zeion

+0

これで元の関数は上書きされず、メインjsの両方の関数で使用する変数を定義し、実際に切り替えが必要な部分に切り替えることができます –

関連する問題