Javascript 删除<;脚本>;使用jQuery的标记

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

我想使用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='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))