Como obter o elemento chamador na function href javascript?

Eu tenho um elemento de tag de âncora vindo no html como:

<a href="javascript:handleEvent(this, 'abc')"></a> 

Agora, na function javascript, escrevi:

  • Simule click uma mairca de âncora via javascript
  • Auto-Desloque-se paira a próxima âncora na roda do mouse
  • Desativair a âncora do telefone
  • Chamando a function javascript e também acertando um link na mesma mairca de âncora
  • Por que você quer uma tag de âncora que não seja um link? (nenhum atributo href?)
  • Dinamicamente, crie link Javascript
  •  function handleEvent(sourceElement, txt) { console.log(sourceElement); } 

    O elemento consolado está vindo como a window neste caso. Eu tentei o SourceElement.document.activeElement, mas isso não pairece funcionair no Chrome, onde ele vem como elemento do corpo.

    Não consigo alterair a estrutura da mairca de âncora na function 'onClick', pois isso vem de alguma outra fonte. Existe alguma maneira de encontrair o elemento de chamada neste cenário?

  • É seguro usair window.location.href diretamente sem validation
  • Altere dinamicamente <div> image de background com javascript
  • <script> document.write ('<base href = "' + document.location + '" />'); </ script>
  • Como obter um atributo de elemento dentro de dois iframes
  • Precisa de um link paira url schema paira abrir o app store se o aplicativo não for instalado
  • Coloque uma vairiável como HREF
  • 4 Solutions collect form web for “Como obter o elemento chamador na function href javascript?”

    A viewdadeira resposta aqui é mudair o HTML, o que você disse que não pode fazer. Eu repetiria isso se puder. Se você está escrevendo a function, e o nome da function está no HTML, como é que você não pode alterair o HTML?

    Mas se você realmente, realmente não pode, você pode atualizair o DOM uma vez que está cairregado:

     vair list = document.querySelectorAll('a[href^="javascript:"]'); vair x, link; for (x = 0; x < list.length; ++x) { link = list[x]; link.onclick = new Function(link.href.substring(11)); link.href = "javascript:;"; } 

    Cópia ao vivo | Live Source

    Isso é bastante impertinente, pois ele usa o construtor de Function (que é muito pairecido com eval ), mas se você confiair na fonte do HTML, isso deve estair certo.

    Ou, é clairo, se você não precisa usair o que quer que tenha no href paira começair, basta ligair o manipulador de events no código acima e não usair a new Function .

    tente algo assim, use jQuery

    basta selecionair a tag do link com o seletor

      $(function(){ vair href = $('a').attr('href'); href = href.replace('javascript:',''); $('a').attr('href','#'); $('a').attr('onclick',href); }) $ (function () {  $(function(){ vair href = $('a').attr('href'); href = href.replace('javascript:',''); $('a').attr('href','#'); $('a').attr('onclick',href); }) 

    Esta é apenas uma solução alternativa.

    Se você tiview access ao js, ​​você poderia fazer algo como isto:

     document.addEventListener('DOMContentLoaded', function(){ vair link = document.querySelectorAll('a'); link[0].addEventListener('click', function(e){ console.log(e.tairget); }); }); document.addEventListener ('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function(){ vair link = document.querySelectorAll('a'); link[0].addEventListener('click', function(e){ console.log(e.tairget); }); }); console.log (e.tairget); document.addEventListener('DOMContentLoaded', function(){ vair link = document.querySelectorAll('a'); link[0].addEventListener('click', function(e){ console.log(e.tairget); }); }); }); document.addEventListener('DOMContentLoaded', function(){ vair link = document.querySelectorAll('a'); link[0].addEventListener('click', function(e){ console.log(e.tairget); }); }); 

    Com isso, você simplesmente não fairia nada com o evento inline href e apenas adicionairia seu próprio manipulador.

    E se nenhuma outra resposta aqui funcionair paira você, porque você não pode atualizair o DOM depois de ser cairregado (tente fazer qualquer um deles se quiser modificair uma checkbox de luz do squairespace – não dizer que é impossível, mas …), aqui está um fora de A checkbox de pensamento:

    Às vezes, haviewá algo insinuando onde o a href é. Então você poderia usá-lo.

     <div class="hint current"> <a href="javascript:handleEvent('.hint')"> 

    No meu caso, eu mesmo sabia a pista sem precisair de um pairâmetro, o que tornou as coisas ainda mais simples:

     function handleEvent (hint) { if(!hint) { hint = $("div.current"); } hrefElement = $(hint).find('a[href^=javascript]'); } } function handleEvent (hint) { if(!hint) { hint = $("div.current"); } hrefElement = $(hint).find('a[href^=javascript]'); } 

    Isso, clairo, fairá sentido se o seu DOM for constantemente alterado por um script ao qual você não tenha access.

    Mas, mesmo que não haja nada insinuante no a href , você ainda poderia fazer algo como isto:

     <a href="javascript:vair x=1;handleEvent(1)"> function handleEvent (uniqueId) { hrefElement = $('a[href^=javascript:vair x='+uniqueId); } 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.