我们是不是需要为所有不同的第三方脚本添加 noscript 标签

Posted

技术标签:

【中文标题】我们是不是需要为所有不同的第三方脚本添加 noscript 标签【英文标题】:Do we need to add noscript tag for all different third party scripts我们是否需要为所有不同的第三方脚本添加 noscript 标签 【发布时间】:2019-06-15 06:26:40 【问题描述】:

我在网页上安装了许多第三方脚本。 其中很少有谷歌分析、Facebook 像素、必应跟踪、谷歌广告跟踪等等。 他们都提供了一个脚本和noscript代码块。 例如: 必应跟踪代码

<script>
        (function(w,d,t,r,u)
            var f,n,i;w[u]=w[u]||[],f=function()
                var o=ti:"5709384";o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad"),
                n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function()
                    var s=this.readyState;s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)
                ,i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i))(window,document,"script","//bat.bing.com/bat.js","uetq");
    </script>
    <noscript><img src="//bat.bing.com/action/0?ti=5709384&Ver=2"   style="display:none; visibility: hidden;" /></noscript>

还有 facebook 像素代码

  <script>
    !function(f,b,e,v,n,t,s)
    if(f.fbq)return;n=f.fbq=function()n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments);
    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
    n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t,s)(window,document,'script',
    'https://connect.facebook.net/en_US/fbevents.js');
    fbq('init', '756756745676'); 
    fbq('track', 'PageView');
    </script>
    <noscript>
    <img   
    src="https://www.facebook.com/tr?id=756756745676&ev=PageView
    &noscript=1"/>
    </noscript>

现在我担心的是我们是否需要添加所有 noscript 标签。如果我删除所有 noscript 标签并放置一个带有消息以打开 javascript 的单个 noscript 标签,会不会很好。或者我可能对 noscript 标签有错误的想法。请指教。

【问题讨论】:

【参考方案1】:

如果&lt;noscript&gt; 标签是明确提供给您的,则不应删除它们,尤其是对于 Facebook Pixel、Google Tag Manger 等。

对于普通用户(默认情况下已启用脚本),普通的&lt;script&gt; 标签将运行,您的第三方跟踪工具将按预期运行,从而为您的分析做出正确贡献。

但是,对于一些关闭脚本的用户,正常的&lt;script&gt; 标签将无法运行,因此您的分析将不再准确。这就是&lt;noscript&gt; 发挥作用的地方。

如果您注意到,这些第三方分析提供的&lt;noscript&gt; 具有&lt;iframe&gt;&lt;img&gt;src 属性以及您的“app_id”。使用 Facebook Pixel 和 GTM,您还会在属性中看到类似“PageView”之类的内容。

每当加载带有src&lt;iframe&gt;&lt;img&gt; 时,页面浏览量都会归因于您的跟踪ID。

因此,在关闭脚本的情况下,&lt;noscript&gt; 现在可以跟踪您的网络性能,使您的分析更加准确(即使某些高级跟踪功能不可用)。

阅读详情here 和here。

【讨论】:

以上是关于我们是不是需要为所有不同的第三方脚本添加 noscript 标签的主要内容,如果未能解决你的问题,请参考以下文章

为页面上的所有 AJAX 请求添加“钩子”

Xilica添加Lua脚本

如何设计Python代码以便第三方轻松添加/定制

编辑文本图层 - Photoshop 脚本

我们是不是需要为所有 iPhone/iPad 设备提供单独的故事板?

python 学习如何将Python脚本打包成可执行的exe文件#520表白代码