2016-10-28 8 views
0

イベントリスナーと変数の多いチャットボックスUIを作成するjavascriptファイルがあります。リロードJavascriptファイル(イベント、変数などを含む)

実行されたjavascriptファイルを完全に削除/アンロードすることはできますか?私は、スクリプトやDOM要素を削除して再度取り込もうとしましたが、前のコードの変数とイベントリスナーはまだ存在しています。

+0

は機能であなたのjavascriptのコードを入れて、いつでも好きなときにそれを呼び出します。 –

+1

問題は、同じリスナーを再度追加するために、なぜイベントリスナーを削除する必要があるのか​​ということです。私はあなたの問題が –

+0

であると想像しているものと違うと思います。なぜなら、以前のリスナーを削除せずにリスナーを2回追加すると、イベントは2回トリガーされるからです。 @YaromandaX –

答えて

0

いいえ、あなたのコードが再利用されるように設計されていない限り、それ自体は後でクリーンアップすることはできません。あなたが行うことができます

function initSomePlugin(targetEl) { 
    targetEl.addEventListener('click', handleClick); 

    return destroy; 

    function handleClick() { 
     console.log('clicked!'); 
    } 

    function destroy() { 
     targetEl.removeEventListener('click', handleClick); 
    } 
} 

ザ・:として、あなたのスクリプトを設計した場合例えば

let destroyPlugin = initSomePlugin(someElement); 
destroyPlugin(); 
initSomePlugin(someOtherElement); 
+0

これは唯一の方法ですか?私はリスナーと変数の多くを持っていると言ったように –

+0

@LimSYそれは唯一の方法です。別の方法で実装することもできますが、最終的にコードで明示的に行う必要があります。実行された任意のスクリプトの操作を元に戻す方法はありません。あなたのコードがうまく設計されていない場合、私はこれが面倒なことに同意しますが、本当にそれほど難しいはずはありません。 – plalx

関連する問題