1

我正在尝试获取 Javascript 像素

<script language='JavaScript1.1' src='http://pixel.tag.com/event/js?mt_id=123456789&mt_adid=123456&v1=&v2=&v3=&s1=&s2=&s3='></script> 

单击提交按钮后触发,类似于您可以在此页面上找到的内容。(我知道这可能需要构建一个简单的“谢谢”页面,这没关系,但像素无法触发 onClick。

此外,我需要传递给 v1、v2 等变量的不同字段中的文本以被像素捕获。

<p>First Name <span class="orng">*</span><br />
<span class="wpcf7-form-control-wrap first-name"><input type="text" name="first-name" value="" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" size="40" /></span> </p>

我对此有点陌生,不是开发人员,但了解它在概念上的工作原理,因此非常感谢任何帮助!

4

2 回答 2

3

从以前使用像素开始,这是我推荐的广泛解决方案。从一个 JavaScript 字符串变量开始,该变量收集适当的信息以配合 ?mt_id=123456789&mt_adid=123456&v1=&v2=&v3=&s1=&s2=&s3=。如果你已经建好了,那就太好了。

<script type='text/javascript'>
    var track = new Image();
    track.src="http://pixel.tag.com/event/js?self=" + dataString;
</script>

如果看到另一个解决相同问题的人的例子会有所帮助。尝试阅读此论坛帖子

于 2013-04-17T00:39:50.387 回答
2

这里的技巧不在于“跟踪像素”,而在于填充参数的值。

您将在这里遇到的问题是您现在必须构建一个指向 .js 文件的字符串,然后将参数和值构建为字符串,将它们全部连接起来,构建一个脚本标签和将 url 指向您构建的值,因此丑陋的(按 JS-purist 标准)解决方案可能如下所示:

<form id="ContactForm">
    <input name="first-name">
    <input name="last-name">
    <button id="my-button" type="submit">sign up</button>
</form>

<script>

    // the button you want to listen to
var button = document.getElementById("my-button"),
    // assuming your form has the id "ContactForm"
    contact = window.ContactForm,

    // create a <script> tag, like the one that's hard-coded now
    script = document.createElement("script"),
    // find whatever element contains the first <script> on the page -- usually <head> or <body>
    parent = document.getElementsByTagName("script")[0],

    // as much of the tracking URL that you know will NEVER change
    url = "//analytics.tag.com/event/tracking.js?mt_id=123456&mt_adid=123abc";


button.onclick = function () {

    var full_url = "",
        v1,
        v2;

    v1 = contact["first-name"];
    v2 = contact["last-name"];

    full_url = url + "&v1=" + v1 + "&v2=" + v2;

    script.src = full_url;
    parent.appendChild(script);

};

</script>

单击按钮时,将从表单中收集值,将它们添加到 URL 中,并将脚本添加到页面中。

这是下一个问题:

如果这是 a 并且您正在捕获将您带到下一页的点击,默认情况下,您必须取消表单提交,否则,对 JS 文件的请求将被忽略(为什么要加载新的东西当您告诉浏览器您要转到下一页时?)。

因此,您需要将其修改为button.onclick

button.onclick = function (e) {
    // IE < 9 supports "window.event", instead of an event-object as a parameter
    e = e || window.event;

    if (e.preventDefault) {
        e.preventDefault();
        e.stopPropagation();
    } else {
        // IE < 9
        e.cancelBubble = true;
        e.returnValue  = false;
    }


    /*  DO ALL OF YOUR DATA-COLLECTION AND STRING-BUILDING HERE
        ie: most of the first version of this function (all before `script.src =...`)
     */


    // after the script loads, fire contact.submit
    script.onload = contact.submit;
    // if the script errors out (404/etc) fire contact.submit
    script.onerror = contact.submit;
    // GhettoIE fix, for when scripts don't support "onload"
    script.onreadystatechange = function () {
        if (script.readyState === 4) { contact.submit(); }
    };

    /* SET THE SCRIPT URL HERE */
    script.src = full_url;
    parent.appendChild(script);
};

现在,当您单击按钮时,它将阻止表单提交(将您带到下一页),直到您收集所有表单值,将它们填充到脚本的 URL 中,将脚本放在页面上,然后等待服务器获取请求并响应。

这是以非常非常丑陋的跨浏览器 (IE6+/Safari3+) 兼容格式完成的。
如果你那里有一个像样的 JS 人,让他做得比这更好,否则我会哭...

如果您需要在下一页收集数据(例如,您需要在服务器处理付款后计算您的实际销售利润),您最好使用服务器的语言进行此操作:

// php
"<script src=\"....?v1=$profit&v2=$product_id\"></script>";

希望有帮助。

于 2013-04-17T02:34:05.877 回答