facebook pixel 的显式和直接代码是什么

What is the explicit and direct code for facebook pixel

(我仍在改进这个问题,请随时为我更好地阐明我的问题。我已经完成了自己的回答,这应该有助于更好地构建这个问题)

显式 - 在这种情况下表示 "direct"。 Facebook 提供的那个被缩小并包含一个延迟的脚本标签注入器。

这如何分解为可以更明确地编码而无需缩小和延迟脚本加载的逻辑部分?我怎样才能直接包含 https://connect.facebook.net/en_US/fbevents.js 的脚本标签?

当前指定区块:

<!-- Facebook Pixel Code -->
<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', 'your-pixel-id-goes-here');
  fbq('track', 'PageView');
</script>
<noscript>
  <img height="1" width="1" style="display:none" 
       src="https://www.facebook.com/tr?id=your-pixel-id-goes-here&ev=PageView&noscript=1"/>
</noscript>
<!-- End Facebook Pixel Code -->

为什么可能需要 explicit 版本:

我打算将工作答案与 一起用于我自己。所以请不要回复 "You don't want this because I don't want this" 之类的东西。

截至 2019-06-24 并给定当前指定区块:

<!-- Facebook Pixel Code -->
<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', 'your-pixel-id-goes-here');
  fbq('track', 'PageView');
</script>
<noscript>
  <img height="1" width="1" style="display:none" 
       src="https://www.facebook.com/tr?id=your-pixel-id-goes-here&ev=PageView&noscript=1"/>
</noscript>
<!-- End Facebook Pixel Code -->

有 4 个不同的部分:

  1. Window 变量和 double-installation 冲突。默认代码似乎异步加载脚本,并设置 fbq 函数在脚本加载之前对命令进行排队。
  2. 包含依赖脚本标签
  3. 使用 fbq 命令初始化和跟踪页面视图
  4. 在没有 javascript 支持的情况下加载图像

假设您可以完全控制网页的内容,并且您知道不会重复尝试加载 facebook 像素 - 这可以通过以下方式更明确地部署:

1) 将此脚本加载到头部的以下内容之前

<script async src="https://connect.facebook.net/en_US/fbevents.js"></script>

2) 把这个可变的脚本代码块放在[1]

之后的header中
<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=[];}(window, document,'script'); //Same as usual but with the script injection part removed.

  fbq('init', 'your-pixel-id-goes-here');
  fbq('track', 'PageView');
</script>

3) 将这个 noscript 部分放在正文的末尾

<noscript>
  <img height="1" width="1" style="display:none" 
       src="https://www.facebook.com/tr?id=your-pixel-id-goes-here&ev=PageView&noscript=1"/>
</noscript>

(测试成功)