我想使用jQuery删除此Google Analytics块。
<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创建一个定制的屏幕阅读器转换器。谷歌分析是困扰我的。
问题
它适用于.remove()
,直到您离开,然后按回。谷歌分析挂起。
答案 0 :(得分:7)
试试这个:
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);
希望有所帮助!
答案 1 :(得分:2)
你也可以挂钩document.write并检查它的谷歌分析代码是否会像这样停止:
<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)
所以这项工作正如你所希望的那样。至少我认为它会:
<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))
希望这就是你要找的东西。
答案 3 :(得分:0)
要实际删除元素,jQuery('script:not([src^=http])').remove()
将起作用。