代码之家  ›  专栏  ›  技术社区  ›  Tig7r

如果已经在前端加载了Facebook像素代码,请防止代码隐藏再次加载?

  •  0
  • Tig7r  · 技术社区  · 6 年前

    注册完成后,我的模块需要提交完整的注册Facebook像素事件。

    在Facebook像素助手工具上,它显示像素代码加载了两次。 有时候不是。

    有时会发生回发,当“注册成功”消息和Facebook跟踪事件一起加载时,我需要在后面的代码中再次加载它。

    我可以在下面的IF语句中添加什么来检查Facebook像素代码是否尚未加载到前端?

    这是我的代码:

     RegUserFacebookPixelID = TryGetPortalSetting("FacebookPixelID");
    
    if (RegUserFacebookPixelID != null)
    {
        string FacebookPixelResult = string.Empty;
    
        using (var FBPxl = new StringWriter())
        using (var FBCodescript = new HtmlTextWriter(FBPxl))
        {
            FBCodescript.AddAttribute(Attr.Type, "text/javascript");
            FBCodescript.RenderBeginTag(Tag.Script);
            //load ecommerce plugin
            FBCodescript.WriteLine("!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)};");
            FBCodescript.WriteLine("if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0';");
            FBCodescript.WriteLine("n.queue =[]; t = b.createElement(e); t.async = !0;");
            FBCodescript.WriteLine("t.src = v; s = b.getElementsByTagName(e)[0];");
            FBCodescript.WriteLine("s.parentNode.insertBefore(t, s)}");
            FBCodescript.WriteLine("(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');");
            FBCodescript.RenderEndTag();
            FBCodescript.WriteLine($"<noscript><img height='1' width='1' style='display:none'  src='https://www.facebook.com/tr?id={RegUserFacebookPixelID}&ev=PageView&noscript=1'/></noscript>");
            FacebookPixelResult = FBCodescript.InnerWriter.ToString();
        }
    
        Page.ClientScript.RegisterStartupScript(this.GetType(), "myFacebookPixelInitialization", FacebookPixelResult, false);
    }
    
    0 回复  |  直到 6 年前