Я хочу удалить этот блок 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 зависает.
Попробуйте следующее:
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);
Надеюсь, это поможет!
Для фактического удаления элементов jQuery ('script: not ([src ^ = http])'). Remove ()
будет работать.
Итак, все работает так, как вы надеетесь. По крайней мере, я думаю, что так будет:
<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))
Надеюсь, это именно то, что вы искали.
Вы также можете перехватить 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>