10

これが重複している可能性があるかどうかはわかりませんが、

私は自分のWebサイトでajaxを使用していますが、その呼び出しに応答して、HTMLとスクリプトを送信します。

次に、そのデータをページに存在する要素の一部に置き換えます。

ここで、2番目のajax呼び出しを行いたいので、ロードされたdivからhtmlコンテンツを削除しました。次に、再びajax呼び出しで他のHTMLコードとスクリプトを返します。ただし、以前のスクリプトと新しく到着したスクリプトの間で競合が発生する場合があります。

元。最初の応答htmlとscriptをいくつかの要素に置き換えます。 $('.ma_right_main').html(response.data);

次に、2回目の呼び出しの前に、コンテンツを削除します。 $('.ma_right_main').html('');

2番目の応答私はいくつかの要素で置き換えhtmlてスクリプトを作成します: $('.ma_right_main').html(response.data);

しかし、それを置き換えた後、2回目のスクリプトが最初から戻ってきましたが、まだ実行中です。HTMLコンテンツを削除するのと同じように削除したいと思います。

4

2 に答える 2

3

ブラウザがスクリプトをロードした後、それを削除できるとは思いません(これは、それをdomから削除できないという意味ではありませんが、まだ存在します)。たとえば、変数を持つスクリプトがある場合x、スクリプトがロードされるようにページをロードし、domからスクリプトを削除しますx。まだ定義されていると思います。

ただし、これを回避する方法はいくつかありますが、動的にロードされる各スクリプトが独自のオブジェクトである場合、「アンロード」するときにオブジェクトをnullに設定できます。これは、私がしばらく前に似たような解決策を探していたときに出くわした解決策です。

私が参照していた参照を見つけました:https ://stackoverflow.com/a/1346903/1475461

于 2012-07-20T09:34:44.063 に答える
3

スクリプトは自然には実行されません。(設定.innerHTMLはHTML内のスクリプトを実行しません)。

jQueryは、html内のすべてのスクリプト要素を手動で検索し、それらを削除して評価します。したがって.html、スクリプトを使用していて実行したくない場合は、HTMLにスクリプトを含めないでください。

また、スクリプトを非アクティブ化することはできないため、これを念頭に置いてWebサイトをリファクタリングする必要があります。以前のコードと競合する可能性がある場合は、応答に新しいコードを含めないでください。常にロードされるジェネリックコードを使用します。

于 2012-07-20T09:42:25.943 に答える