Удалите <сценарий> теги с помощью jQuery

Я хочу удалить этот блок Google Analytics, с помощью 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>

ПРИЧИНА

Поскольку я создаю сделанный на заказ преобразователь для чтения с экрана для jQuery на основе клиентской спецификации. Это - Google Analytics, который прослушивает меня.

ПРОБЛЕМА

Это работает с .remove() пока Вы не перешли далеко, затем оттесняете. Аналитика Google зависает.

14
задан Bergi 29 June 2015 в 18:52
поделиться

4 ответа

Попробуйте следующее:

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);

Надеюсь, это поможет!

7
ответ дан 1 December 2019 в 15:11
поделиться

Для фактического удаления элементов jQuery ('script: not ([src ^ = http])'). Remove () будет работать.

0
ответ дан 1 December 2019 в 15:11
поделиться

Итак, все работает так, как вы надеетесь. По крайней мере, я думаю, что так будет:

<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>

Просто чтобы объяснить. Я просматриваю все теги скриптов на странице. Если их свойство innerHTML имеет длину больше 0, я проверяю innerHTML скрипта и обнаруживаю в нем строку var gaJsHost или var pageTracker. Затем я убеждаюсь, что не вижу в нем innerHTML, так как в нашем скрипте они явно есть. Если, конечно, у вас нет этого кода в скрипте, загруженном на страницу с использованием src, и в этом случае у этого скрипта не будет набора свойств innerHTML, и вы можете изменить строку if, чтобы она была просто

if (this.innerHTML.match(googleScriptRegExp))

Надеюсь, это именно то, что вы искали.

1
ответ дан 1 December 2019 в 15:11
поделиться

Вы также можете перехватить document.write и проверить, есть ли его код аналитики Google, прежде чем останавливать его следующим образом:

<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>
2
ответ дан 1 December 2019 в 15:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: