イベントリスナーと変数の多いチャットボックスUIを作成するjavascriptファイルがあります。リロードJavascriptファイル(イベント、変数などを含む)
実行されたjavascriptファイルを完全に削除/アンロードすることはできますか?私は、スクリプトやDOM要素を削除して再度取り込もうとしましたが、前のコードの変数とイベントリスナーはまだ存在しています。
イベントリスナーと変数の多いチャットボックスUIを作成するjavascriptファイルがあります。リロードJavascriptファイル(イベント、変数などを含む)
実行されたjavascriptファイルを完全に削除/アンロードすることはできますか?私は、スクリプトやDOM要素を削除して再度取り込もうとしましたが、前のコードの変数とイベントリスナーはまだ存在しています。
いいえ、あなたのコードが再利用されるように設計されていない限り、それ自体は後でクリーンアップすることはできません。あなたが行うことができます
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);
これは唯一の方法ですか?私はリスナーと変数の多くを持っていると言ったように –
@LimSYそれは唯一の方法です。別の方法で実装することもできますが、最終的にコードで明示的に行う必要があります。実行された任意のスクリプトの操作を元に戻す方法はありません。あなたのコードがうまく設計されていない場合、私はこれが面倒なことに同意しますが、本当にそれほど難しいはずはありません。 – plalx
は機能であなたのjavascriptのコードを入れて、いつでも好きなときにそれを呼び出します。 –
問題は、同じリスナーを再度追加するために、なぜイベントリスナーを削除する必要があるのかということです。私はあなたの問題が –
であると想像しているものと違うと思います。なぜなら、以前のリスナーを削除せずにリスナーを2回追加すると、イベントは2回トリガーされるからです。 @YaromandaX –