как получить привязку с существующей функцией onclick

<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 закладки anchor
  • Этот тег привязки не контролируется моим кодом, но добавляется сторонней библиотекой, поэтому я не могу изменить привязку
  • Когда пользователь нажимает этот тег привязки, его clickфункция должна работать как есть. В дополнение к этому я могу также захватить clickсобытие и получить значение атрибута data-provider.

Хотите получить значение поставщика данных.

javascript,jquery,html,jquery-ui,onclick,

-3

Ответов: 2


3

Попробуйте захватить клик, <div class="social">а не тег привязки. Таким образом, вы можете захватить событие привязки тегов после нажатия abc.com.

 

document.getElementsByClassName('social')[0]
  .addEventListener('click', function(event) {
    alert("You captured anchor tag event")
  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div class="shareThis">
//3rd party code start//
  <div class="social">
  <a onlick='onclick()' data-provider='Abhishek'>abc.com</a>
 
 </div>
 </div>


1

Просто добавьте свой собственный обработчик событий для события click и сделайте то, что вы там хотите.

Вы указываете, что привязывающие теги добавляются динамически с помощью сценария, который вы не контролируете. По этой причине я рекомендую сделать обработчик кликов делегированным обработчиком.

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>

JavaScript, JQuery, HTML, JQuery-щ, OnClick,
Похожие вопросы
Яндекс.Метрика