2010-06-21 13 views
14

Ich möchte diesen Google Analytics-Block mit jQuery entfernen.Entfernen Sie <script> Tags mit jQuery

<script type="text/javascript"> 
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
</script> 
<script type="text/javascript"> 
    try { 
     //var pageTracker = _gat._getTracker("xxx"); 
     pageTracker._trackPageview(); 
    } catch(err) {} 
</script> 

DER GRUND

Weil ich einen maßgeschneiderten Screenreader-Konverter für jQuery basierte erschaffe auf einer Client-Spezifikation. Es ist die Google Analytics, die mich nervt.

DAS PROBLEM

Es mit .remove() arbeitet, bis Sie weg zu navigieren, und drücken Sie dann zurück. Google Analytics bleibt hängen.

+5

Sie können die Elemente entfernen, aber ich denke nicht, dass dies tun wird, was Sie wollen ... das Skript wird bereits an diesem Punkt ausgeführt haben. –

+0

Versuchen Sie, Formulardaten zu validieren? Wenn dies der Fall ist, wird dies einen Angreifer nicht stoppen. Serverseitige Validierung ist notwendig. – ceejayoz

+0

Nein, ich erstelle einige maßgeschneiderte Javascript-basierte Screen-Reader-Funktionalität. –

Antwort

7

Versuchen Sie folgendes:

var replacementDoneIn = $(document.body).text(); //remove Google Analytics document.write line 
     var regExMatch = /document\.write\(unescape/g; 
     var replaceWith = "//document.write"; 
     var resultSet = replacementDoneIn.replace(regExMatch, replaceWith); 
     $("body").html(resultSet); 

Hoffnung, das hilft!

+3

Perfekt, aber das entfernt JEDE Instanz von 'document.write (unescape), aber das ist gut für das, was ich im Moment brauche. –

+3

Beachten Sie, dass dadurch auch alle Ereignisse von der Seite entfernt werden. – David

+7

haha, wie hat Davids Kommentar 3 upvotes bekommen, als ich vor gut 8 Stunden meins gesagt habe? - zufällige stackoverflow Benutzer:) –

0

Um die Elemente tatsächlich zu entfernen, funktioniert jQuery('script:not([src^=http])').remove().

+1

Nein, ich fürchte, das funktioniert auch nicht>. < –

+0

Du meinst von der "Ansicht source "? Wenn ja, gibt es keine Lösung in JS. Es entfernt jedoch alle Skriptblöcke ohne' src' aus dem Dom. Wenn Sie alle entfernen möchten, verwenden Sie einfach 'jQuery ('script'). remove()' –

+0

Das entfernt zwar alle Script Tags, aber ich möchte nur einen bestimmten löschen ... –

2

Sie können auch document.write Haken und überprüfen, ob seine google anlytics Code, bevor es so zu stoppen:

<script> 
// Must run before google analytics though 
old_document_write = document.write; 
document.write = function(str) 
{ 
    if(/* determine if the str is google analyic code */) 
     return false; // dont write it 
    else 
     old_document_write(str); 
} 
</script> 
1

Also diese Arbeit, wie Sie hoffen. Zumindest glaube ich, es wird:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("script").each(function() { 
      if (this.innerHTML.length > 0) { 
       var googleScriptRegExp = new RegExp("var gaJsHost|var pageTracker"); 
       if (this.innerHTML.match(googleScriptRegExp) && this.innerHTML.indexOf("innerHTML") == -1) 
        $(this).remove(); 
      } 
     }); 
    }); 
</script> 

einfach zu erklären. Ich durchlaufe alle Skript-Tags auf der Seite. Wenn ihre innerHTML-Eigenschaft eine Länge größer als 0 hat, dann überprüfe ich die innerHTML des Skripts und finde die Zeichenfolge var gaJsHost oder var pageTracker darin. Ich stelle dann sicher, dass ich auch innerHTML nicht sehe, da unser Skript offensichtlich darin enthalten ist. Es sei denn natürlich Sie diesen Code in einem Skript auf der Seite mit src geladen haben, in dem Fall dieses Skript keine innerHTML- Eigenschaft gesetzt haben würde, und Sie können das ändern, wenn Zeile nur

zu
if (this.innerHTML.match(googleScriptRegExp)) 

Hoffnung ist das, was Sie wir suchen nach.

Verwandte Themen