Удалить теги <script> с помощью 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 Analytics висит.
Ответы
Ответ 1
Попробуйте следующее:
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);
Надеюсь, что это поможет!
Ответ 2
Вы также можете зацепить файл document.write и проверить, не отличается ли его код anlytics от 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>
Ответ 3
Итак, эта работа, как вы надеетесь. По крайней мере, я думаю, это будет:
<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>
Просто чтобы объяснить. Я просматриваю все теги script на странице. Если их свойство innerHTML имеет длину больше 0, тогда проверьте innerHTML script, и если я найду в нем строку var gaJsHost или var pageTracker. Затем я убеждаюсь, что я также не вижу в нем innerHTML, поскольку наш script, очевидно, будет иметь в нем. Если, конечно, у вас нет этого кода в script, загруженном на страницу с помощью src, и в этом случае этот script не будет иметь свойство свойства innerHTML, и вы можете изменить строку if только как
if (this.innerHTML.match(googleScriptRegExp))
Надеюсь, это то, что вы искали.
Ответ 4
Чтобы удалить элементы, jQuery('script:not([src^=http])').remove()
будет работать.