【问题标题】:Facebook Conversion Pixel code: BODY vs HEADFacebook 转换像素代码:身体与头部
【发布时间】:2014-02-21 19:55:54
【问题描述】:

我可以将 Facebook 转换像素放置在 BODY 内(而不是 HEAD 内,这是 Facebook 在其规范中所建议的吗?

我不明白为什么不。有人试过吗?

这是代码示例

<script type="text/javascript">
        var fb_param = {};
        fb_param.pixel_id = '123456789';
        fb_param.value = '10';
        fb_param.currency = 'USD';
        (function(){
            var fpw = document.createElement('script');
            fpw.async = true;
            fpw.src = '//connect.facebook.net/en_US/fp.js';
            var ref = document.getElementsByTagName('script')[0];
            ref.parentNode.insertBefore(fpw, ref);
        })();
    </script>
    <noscript><img height="1" width="1" alt="" style="display:none" src="https://www.facebook.com/offsite_event.php?id=1234566&amp;value=10&amp;currency=USD" /></noscript>

【问题讨论】:

  • &lt;head&gt; 中添加&lt;img&gt; 标记让我很困扰。这完全违反了 HTML 规范。
  • @Chloe,您可以将&lt;noscript&gt;... 部分移动到正文中,这样可以正常工作。

标签: html facebook tracking


【解决方案1】:

根据这里的答案:https://www.facebook.com/help/community/question/?id=10200354561858276

您可以将其放在&lt;BODY&gt; 元素内,但 FB 建议将其保留在 &lt;BODY&gt;&lt;HEAD&gt; 的开头,因为即使页面未完全加载或用户未完全加载,转换也会被计算在内关闭页面。

【讨论】:

  • 在 中有脚本让我担心的是,有一个
  • Facebook 想将其计为转化,但如果用户在页面加载之前关闭页面,从真正的角度来看,这不是转化。这意味着它根本不应该被计算在内。我认为这个转换代码应该放在正文的末尾。最后一个可能的标签。
  • 你是说如果我关闭我的标签页或浏览器,无论如何都会执行头部中的任何内容?我想无论如何这一切都会被杀死。此外,如果用户关闭页面,我们为什么要将其计为点击?
  • 对于大多数页面,我想将其放在最后,以确保仅对最有可能响应重定向广告的访问者计算转化。在这里,用户的质量比数量更重要,因为 Facebook 会将您的广告展示给与这些类似的人。但是对于重定向的页面,最好将其放在头部。例如,您网站上记录访问的页面,然后将访问者重定向到您在亚马逊上的产品页面。
【解决方案2】:

您可以将 fb 像素代码放在文档中的任何位置。它会起作用的。 测试

如果你放在正文的末尾,有一个缺点,如果用户关闭浏览器,你将无法获得像素数(情况 - 页面未完全加载)。

但如果它存在于头部,则在页面未正确加载的情况下,您将获得像素数。

【讨论】:

  • 如果用户无论如何都不会看到该页面,那么计算点击有多大用处?!
  • @AlexisWilke 对我来说,如果用户不打算看到该页面,则没有多大用处。我更喜欢放在最后。
  • Alexis,即使页面没有“完全加载”,用户也可以看到整个页面(或至少已经下载的内容)。例如,可能一些不重要的外部资源正在缓慢/永久加载,就在您的 fb 像素代码之前,阻止加载页面的其余部分,但大多数现代浏览器会在下载页面组件后立即呈现页面组件。在这种情况下,用户会在浏览页面时甚至没有注意到这些页面没有完全加载,但您的统计数据不会得到任何点击。
【解决方案3】:

显然,是的。它在身体中起作用。经过测试。

【讨论】:

  • 为什么不把这个放在页面底部?
【解决方案4】:

无论如何,提供的代码都会在第一次出现标记之前放置对 FB 脚本的引用,请参阅:

var ref = document.getElementsByTagName('script')[0];
ref.parentNode.insertBefore(fpw, ref);

你想改变这个的具体原因是什么?

【讨论】:

  • 由于我网站的结构,将内容放在 HEAD 中会变成非常不优雅的代码。可以做,但会看起来很尴尬。我宁愿把它放在身体里。
  • 试试吧,不过自求值函数的代码无论如何都会把脚本引用放在DOM中第一个
  • 我认为这是问题所在。它将创建一个 SCRIPT 块并将其放置在 DOM 中(在 BODY 内)。该 SCRIPT 可能需要变量 fb_param 才能工作,并且可能需要在插入块之前对其进行定义。这可能就是为什么他们指出它必须放在 HEAD 中(因此变量已经定义)。我将对其进行测试并报告。我试图避免对其进行测试(如果有人尝试过的话),因为要对其进行测试,我必须使用大量的社会工程来从我的客户那里获取 FB 帐户凭据。哈哈。
  • 另外,在 HEAD 中放置 IMG 对我来说听起来不正确(非脚本部分)
  • @cockypup,请注意,您可以将&lt;noscript&gt;... 部分放在您的身体中,而在您的&lt;head&gt;... 标签中仍然有另一个&lt;script&gt;... 部分。这样你就解决了这两个问题。
【解决方案5】:

我所做的是将代码的&lt;script&gt; 部分放在HEAD 部分中,并将&lt;noscript&gt; 部分放在BODY 部分的末尾。为什么?

如果启用了 Javascript,并且如果您认为每次点击您的页面很重要,那么无论页面是否已完全加载,这仍然有效。

如果没有启用 Javascript,&lt;noscript&gt; 部分也将被执行,不会造成 dom 模型布局的干扰(在我的页面上,它为那个 1px 的图像添加了一些虚假的高度,天知道是什么原因)而且,最重要的是,它将在 W3C HTML 验证器中进行验证。如果将 noscript 部分留在 head 部分,noscript 中的 img 标签会导致验证错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2015-03-06
    相关资源
    最近更新 更多