使用JavaScript跟踪联盟计划广告横幅的点击次数

时间:2011-11-23 14:35:24

标签: jquery

我有一个网站,我是多个联盟计划的用户。

如何跟踪访问者点击哪些横幅?

我的网站基本上有两种广告:

  1. 带链接的图片
  2. 联盟计划提供的横幅(通常是一个空的div,带有一个JavaScript代码,可以在联盟计划的服务器上按需检索横幅)
  3. 所以我有想法将我的网站的每个广告块放在具有给定类的DIV中,因此每次用户点击其中一个孩子时,我都可以请求确认我的数据库上的这个点击(注意这一部分在代码上并不明确)。但这不起作用。可能是由于错误的 jQuery选择器用法。

    出于好奇:是否有任何插件用于此用途?

    CODE

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
    <script language="javascript" type="text/javascript">
        $(document).ready(function() {
            $(".ad").children().live("click", function(event) {
                var id = $(this).attr("id");
                alert(id); //should alert ad-1 or ad-2
            });
            $(".ad-affiliate").children().live("click", function(event) {
                var container = $(this).find(".affiliate-container");
                var id = container.attr("id");
                alert(id); //should alert affiliate-1
            });
        });
    </script>
    </head>
    <body>
        <div class="ad">
            <a target="_blank" href="#">
                <img id="ad-1" src="src1.png"/>
            </a>
            <a target="_blank" href="#">
                <img id="ad-1" src="src1.png"/>
            </a>
        </div>
        <div class="ad-affiliate">
            <div id="affiliate-1" class="affiliate-container">
                <!-- THIS CONTENT IS GIVEN BY THE CODE PROVIDED BY THE AFFILIATE PROGRAM -->
                <!-- It is usually a div with a JavaScript code that populates the div with the content -->
            </div>
        </div>
    </body>
    </html>
    

3 个答案:

答案 0 :(得分:1)

试试这个:

$(document).ready(function() {
    $(".ad").on("click", "a", function(event) {
        var id = $(this).find('img').attr("id");
        alert(id); //should alert ad-1 or ad-2
    });
    $(".ad-affiliate").on("click", "a", function(event) {
        var container = $(this).closest(".affiliate-container");
        var id = container.attr("id");
        alert(id); //should alert affiliate-1
    });
});

此处示例:http://jsfiddle.net/eLUQd/2/

答案 1 :(得分:0)

第一个.ad点击功能需要获取img标记的ID,而不是链接本身。

$(".ad").children().live("click", function(event) {
    var id = $(this).children('img').attr("id");
    alert(id); //should alert ad-1 or ad-2
});

对于会员链接,它实际上取决于他们的Javascript生成的代码,因为您将click事件附加到具有类affiliate-container的整个div,但是用户将单击任何{{1这个div里面的链接。

所以你可能会使用这样的东西:

a

请记住,jQuery $(".ad-affiliate a").live("click", function(event) { var container = $(this).closest(".affiliate-container"); var id = container.attr("id"); alert(id); //should alert affiliate-1 }); 选择器不会选择容器中的所有元素,而只会选择树中的第一个元素。

http://api.jquery.com/children/

答案 2 :(得分:0)

单击链接时,根据浏览器的不同,您通常会立即获得链接的目标,并且您的事件监听器中的javascript不会被激活。

这意味着您需要某种“代理”或“中间人”来检测元素上的点击(并完成所有脏工作,即将使用数据发送到服务器),然后触发点击用户被重定向到广告的目标。

加载页面时,只需为每个广告生成一个隐藏链接,该链接可获取广告中的原始广告素材和唯一ID。 当有人点击广告时,请使用preventDefault();在广告点击事件上,触发带有匹配ID的隐藏链接,以便用户访问他想要的网站。