2

我有form一个onsubmit函数调用,它尝试使用.append().

submit在像素有机会触发之前,表单正在触发并将用户重定向到页面之外(在 chrome 网络调试器中显示为已取消的请求)。

我已经尝试了一些其他的东西setTimeout(),但我似乎无法得到任何工作。

我知道我可以将onclick事件与输入键检查结合使用,然后在setTimeout调用时提交表单。但是,这似乎有些骇人听闻。

另外,我无权访问表单提交到的页面。无法将像素添加到此页面。

有没有更好的方法?

4

2 回答 2

2

我认为跟踪转换的最佳选择是在提交表单后从显示的页面请求这些像素。但是,如果您无法控制该页面,请执行以下操作:

$('form').submit( function(e){
    e.preventDefault(); // do not submit the form just yet
    var $t = $(this), 
        trackingUrl = 'http://placekitten.com/20/10'; 
        $('<img />')
            .on('load', function(){ // when the image loads...
                $t.unbind('submit')  // ...unbind the event listener preventing an endless loop
               .submit() // and submit the form
        }).attr('src', trackingUrl );
});

编辑:您还应该添加一些预防措施(例如 onerror 事件)以防跟踪图像无法加载,否则根本不会提交表单。

于 2013-01-17T19:27:52.997 回答
0

我遇到了类似的问题,因为我试图在用户看到表单(但尚未填写/提交)后触发跟踪(img)像素。用户单击按钮后会显示我的表单,从该站点上的许多帖子中收集的解决方案是在我的代码中添加以下脚本。

<script>
function firepixel()
{
trackingUrl = 'http://mydomain/adopt.php?type=popup';
$('<img />').on('load').attr('src',trackingUrl);

}
</script>

然后,当用户单击触发弹出表单的按钮时,我调用了该函数。

<a class="button" onclick="firepixel()" href="#" data-reveal-id="myModal">Click Here to     Download eBook</a>
于 2014-01-25T10:11:22.263 回答