Javascript 删除<;脚本>;使用jQuery的标记
我想使用jQuery删除这个Google分析块Javascript 删除<;脚本>;使用jQuery的标记,javascript,jquery,html,script-tag,Javascript,Jquery,Html,Script Tag,我想使用jQuery删除这个Google分析块 <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
<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>
var gaJsHost=((“https:==document.location.protocol)?”https://ssl." : "http://www.");
write(unescape(“%3Cscript src=”+gaJsHost+“google analytics.com/ga.js”type='text/javascript'%3E%3C/script%3E”);
试一试{
//var pageTracker=_gat._getTracker(“xxx”);
页面跟踪器。_trackPageview();
}捕获(错误){}
原因
因为我正在根据客户机规范为jQuery创建一个定制的屏幕阅读器转换器。困扰我的是谷歌分析
问题
它与
.remove()
一起工作,直到您导航离开,然后按back。Google Analytics挂起。若要实际删除元素,jQuery('script:not([src^=http])。删除()
将起作用。尝试以下操作:
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);
希望有帮助 您还可以钩住document.write并检查其google anlytics代码是否正确,然后按如下方式停止:
<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>
//但必须在谷歌分析之前运行
old_document_write=document.write;
document.write=函数(str)
{
如果(/*确定str是否为谷歌分析代码*/)
return false;//不要写它
其他的
旧文件(str);
}
所以这是你所希望的。至少我认为它会:
<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>
希望这就是您正在寻找的内容。您可以删除元素,但我认为这不会满足您的要求……脚本将在此时运行。您是否正在尝试验证表单数据?如果是这样,这将无法阻止攻击者。服务器端验证是必要的。不,我正在创建一些定制的基于Javascript的屏幕阅读器功能。有人知道吗?这快把我逼疯了!!是什么阻止您直接从源代码中删除GA代码?有服务器端脚本语言吗?你是说从“查看源代码”开始?如果是这样,JS中就没有解决方案。但是,它确实会从dom中删除任何没有
src
的脚本块。如果您想删除所有内容,只需使用jQuery('script')。remove()。您不能使用它们的位置(使用eq())吗?当然,只有当脚本在每个页面上的顺序相同时,这才有效。问题在于选择的脚本不正确。当它可以运行的时候,谷歌分析已经被解析并运行了。Ryano的上述解决方案之所以有效,是因为它加载页面,解析脚本,然后用解析后的版本重新加载页面。完美,但这确实会删除document.write的每个实例(unescape
但这正是我目前需要的。请注意,这也将从页面中删除所有事件。哈哈,当我在8小时前说我的话时,Davids comment是如何获得3票赞成票的?——随机stackoverflow用户:)
if (this.innerHTML.match(googleScriptRegExp))