Wie kann ich Skriptelemente entfernen, bevor sie ausgeführt werden?

8

Wie kann ich Skriptelemente entfernen, bevor sie ausgeführt werden ?

Ich habe über das DOMNodeInserted-Ereignis nachgedacht, aber anscheinend fängt es keine Skriptelemente. Ich habe auch versucht, das jQuery livequery-Plugin wie folgt zu verwenden:

%Vor%

Es hat das Skriptelement entfernt, aber nachdem es ausgeführt wurde.

Ich suche nach einer Cross-Browser-Lösung, aber ich bin mir nicht einmal sicher, ob das möglich ist. Ich habe über Mutationsbeobachter gelesen, was nah genug scheint, aber ich bin mir nicht sicher, ob es mein Problem lösen kann .

Es wäre sogar noch besser, wenn es einen Weg gäbe, den Skript-Inhalt vor der Ausführung zu ändern, ohne ihn zu entfernen und neu zu erstellen.

    
Alon Gubkin 02.05.2012, 11:17
quelle

2 Antworten

10

Das Entfernen eines Skriptelements führt zu nichts. Wenn Sie irgendwie auf ein Skriptelement zugreifen können, wurde es vor langer Zeit ausgeführt und das Entfernen hat keine Auswirkungen.

Also müssen wir es umgehen. Wenn sich Ihr Skriptelement oben auf der Seite befindet:

%Vor%

Sie können eine synchrone Ajax-Anfrage an dieselbe Seite stellen, so dass Sie ihren Inhalt in ein neues Dokument einlesen, alle Skript-Tags ändern und dann ersetzen können das aktuelle Dokument mit dem geänderten Dokument.

%Vor%

Leider kann dies nicht in jsfiddle oder jsbin eingerichtet werden. Aber Sie sollten in der Lage sein, diesen Code genau so einzufügen, wie er ist Seitenkonsole in Google Chrome. Sie sollten die Warnmeldungen sehen und wenn Sie die Live-Domäne überprüfen, wurde jedes Skript geändert.

Der Unterschied besteht darin, dass wir dies ausführen, nachdem die Skripts auf der Seite ausgeführt wurden. Die alten Skripts sollten also weiterhin auf der Seite funktionieren. Deshalb müssen Sie das erste Skript auf der Seite sein, damit dies funktioniert.

Getestet, um in Google Chrome zu funktionieren. Firefox ignoriert den Aufruf doc.write aus irgendeinem Grund vollständig.

    
Esailija 20.07.2012, 10:42
quelle
-3

Ich weiß nicht, was Sie versuchen zu tun. Aber es ist besser, sie auf Anfrage zu laden, anstatt sie unter bestimmten Bedingungen zu löschen.

%Vor%

Wenn Sie Skripte vor der Ausführung entfernen wollen, ist das nicht möglich. Aber was Sie tun können, ist, Skript programmatisch unter einer Bedingung zu entfernen & amp; Wenn ein Problem mit Speicherlecks auftritt, können Sie den folgenden Code aufrufen, bevor Sie das Skript entfernen.

%Vor%     
MicroEyes 17.07.2012 18:27
quelle

Tags und Links