Piwik 从 ASP 动态生成的下载按钮后面捕获值

piwik capture value behind dynamically generated download button from asp

本文关键字:按钮 下载 ASP 动态 Piwik      更新时间:2023-09-26
一个

网站是在 asp.net 开发的,让人们选择图片下载。该网站将它们分组,然后人们可以按每张图片的下载按钮。

因为我们永远不知道最终将下载多少张图片,该按钮是动态生成的。

我不允许仅在 piwik 部分更改服务器上的 asp.net 代码......

问题是id也是动态生成的。我已经尝试过这个:

    $("h2").on("click", "a.button button-dl", function(){
    alert($(this).text());
});

但是没有得到结果,在这种情况下,我想在变量中检索"276173"。
希望有人能帮助我,感谢您的阅读家伙

<table class="checkout-basket" cellspacing="0" rules="all" border="1" id="ctl00_ctl00_cphContent_cphContent_gvBasketitem" style="border-collapse:collapse;">
    <tr>
        <th scope="col">&nbsp;</th><th scope="col">&nbsp;</th><th scope="col">Asset</th><th scope="col">&nbsp;</th>
    </tr><tr>
        <td style="width:30px;">
                                    <input id="ctl00_ctl00_cphContent_cphContent_gvBasketitem_ctl02_CbFlag" type="checkbox" name="ctl00$ctl00$cphContent$cphContent$gvBasketitem$ctl02$CbFlag" />
                                </td><td style="width:80px;">
                                    <a onclick="return confirm(&#39;Bent u zeker dat u deze asset wil verwijderen?&#39;);" id="ctl00_ctl00_cphContent_cphContent_gvBasketitem_ctl02_lbDelete" class="button" href="javascript:__doPostBack(&#39;ctl00$ctl00$cphContent$cphContent$gvBasketitem$ctl02$lbDelete&#39;,&#39;&#39;)">verwijder</a>
                                </td><td style="width:100px;">
                                                <img id="ctl00_ctl00_cphContent_cphContent_gvBasketitem_ctl02_Image1" src="../../cache/images/thumb/3AF267A169AAED70770F0EEE7E74FBB61A526EBB_156.jpg" style="width:80px;border-width:0px;" />
                                            </td>
                                            <td>
                                                <h2>
                                                        <a href='/nl-BE/asset/276173/'>
                                                            276173
                                                        </a>
                                                    </h2>
                                                  <h2>
                                                        <a href='/nl-BE/asset/276173/'>
                                                            20151109_113939_0040
                                                        </a>
                                                    </h2>
                                                <a class="button button-dl" href="javascript:__doPostBack(&#39;ctl00$ctl00$cphContent$cphContent$gvBasketitem$ctl02$ctl00&#39;,&#39;&#39;)" style="margin-top: 4px;"><img style="position: relative; top: 4px; right: 5px" src="/images/picto/download.png" />Download</a>
                                </td><td>
                                    <div id="ctl00_ctl00_cphContent_cphContent_gvBasketitem_ctl02_pnl">
                                        <input type="hidden" name="ctl00$ctl00$cphContent$cphContent$gvBasketitem$ctl02$hfAsset" id="ctl00_ctl00_cphContent_cphContent_gvBasketitem_ctl02_hfAsset" value="276173" />
                                        <span id="ctl00_ctl00_cphContent_cphContent_gvBasketitem_ctl02_rblPrint" class="rbl"><input id="ctl00_ctl00_cphContent_cphContent_gvBasketitem_ctl02_rblPrint_0" type="radio" name="ctl00$ctl00$cphContent$cphContent$gvBasketitem$ctl02$rblPrint" value="False" checked="checked" /><label for="ctl00_ctl00_cphContent_cphContent_gvBasketitem_ctl02_rblPrint_0">Download</label><br /><input id="ctl00_ctl00_cphContent_cphContent_gvBasketitem_ctl02_rblPrint_1" type="radio" name="ctl00$ctl00$cphContent$cphContent$gvBasketitem$ctl02$rblPrint" value="True" /><label for="ctl00_ctl00_cphContent_cphContent_gvBasketitem_ctl02_rblPrint_1">Print</label></span>
                                        <div class="printFormat" style="display: none; padding: 3px 0 3px 20px;">
                                            <select name="ctl00$ctl00$cphContent$cphContent$gvBasketitem$ctl02$ddlPrint" id="ctl00_ctl00_cphContent_cphContent_gvBasketitem_ctl02_ddlPrint">
                <option selected="selected" value="">--</option>
                <option value="9cmx13cm">9cmx13cm</option>
                <option value="10cmx15cm">10cmx15cm</option>
            </select>
                                        </div>
        </div>
                                </td>
    </tr><tr>

由于下面的答案,我最终找到了解决方案。这是我使用的

    var newstr = "1";
var addressValue = "1";
 $(".button.button-dl").click(function () {
      var addressValue = $(this).attr('href');
      console.log("tweede ",addressValue );
      var re = /'(.*?)'/;
      var re2 = /'$/gi;
    var m = addressValue.match(re);
if (m != null)
    idVal = (m[0].replace(re, '$1'));
    console.log("idVal ",idVal);
     var newstr = idVal.replace(/'$/gi, "_").slice(0,-6)+"_hfAsset";    
    console.log("newstr ",newstr);
    console.log(document.getElementById(newstr).value);
    });

您有一个层次结构问题:

首先,一个 CSS 问题:"a.button button-dl"应该是"a.button.button-dl"的(两个类都在锚标记上)。

其次,该锚标记不包含在h2中,因此您的事件永远不会触发。充其量,您可以使用 td 标记。

所以你的JS可能看起来像:

$("td").on("click", "a.button.button-dl", function () {
    alert($(this).text());
});