如何使用现有的onclick函数获得锚点单击

时间:2018-06-29 12:57:18

标签: javascript jquery html jquery-ui onclick

try {
    ESAPI.initialize("org.owasp.esapi.reference.DefaultSecurityConfiguration");
    value = ESAPIENCODER.canonicalize(value);
} catch (Throwable e) {
    LOG.warn("Invalid parameter value, setting to empty. Value: " + value, e);
    value = "";
}
  • 我想捕获定位标签的点击事件
  • 此定位标记不受我的代码控制,而是由第3方库添加的,因此我无法修改定位标记
  • 当用户单击该锚标记时,其<div class="shareThis"> //3rd party code start// <div class="social"> <a href='https://www.google.com/' onClick='onclick()' data-provider='Abhishek'>test</a> </div> </div 函数应保持原样。除此之外,我还可以捕获onclick事件并获取数据提供者属性值。

想要获取数据提供者的价值。

2 个答案:

答案 0 :(得分:0)

只需为click事件添加您自己的事件处理程序,然后在其中做您想做的事情即可。

您声明锚标记是由不受控制的脚本动态添加的。因此,建议您将点击处理程序设为 delegated 处理程序。

document.body.addEventListener('click', function (e) {
    var target = e.target;

    if ( !(target.tagName.toLowerCase() === 'a' && target.dataset.provider !== undefined)) {
        return; // not an anchor and doesn't have a data-provider, exit the handler
    }

    // since we're here, target must be an anchor with a data-provider attribute.
    // do something with it
    var provider = target.dataset.provider;
    // your code here?
    console.log('Delegated handler running... Provider is: ', provider);
}, false); // setting useCapture to false

window.onclick = function (e) {
  // dummy function to stub the actual 3rd party function
  // and to prevent any actual navigation
  console.log('3rd-party function running...');
  e.preventDefault();
  e.stopPropagation();
  return false;
}
<div class="shareThis">
    <!-- 3rd party code start -->
    <div class="social">
        <a href="http://www.example.com" onlick="onclick()" data-provider="Abhishek">Some Link</a>
    </div>
</div>

答案 1 :(得分:0)

尝试捕获点击 autoresizing mask代替锚标记。这样,您可以在单击abc.com后捕获锚标记事件。

<div class="social">
 

document.getElementsByClassName('social')[0]
  .addEventListener('click', function(event) {
    alert("You captured anchor tag event")
  });