2017-08-04 2 views
0

J'essaye de changer le lien sur mon site Web d'espace en insérant une injection de code. J'ajoute le code suivant:Comment ajouter de l'injection de code JavaScript dans un espace pour modifier l'attribut href?

<script> 
    var element = document.getElementsByClassName('eventitem-backlink')[0]; 
    element.setAttribute('href', '/archive/2017'); 
</script> 

Cependant, cela ne fonctionne pas car l'élément est indéfini. L'appel document.getElementsByClassName renvoie une liste de longueur avec l'élément que je veux modifier, mais lorsque j'essaie de l'extraire, il est indéfini.

Quand je lance le code suivant:

console.log(document.getElementsByClassName('eventitem-backlink')); 
console.log(document.getElementsByClassName('eventitem-backlink')[0]); 

il produit les éléments suivants:

screenshot of console

+0

sonne comme vous exécutez votre code avant que le lien est dans le Royaume, vous pouvez essayer et attendre que le document soit prêt en enveloppant votre code dans 'window.load = function() {/ * code ici * /}; ' – keja

+0

J'ai essayé ceci mais le code ne fonctionne pas du tout comme ceci – Ben

+0

Pouvez-vous ajouter le HTML et CSS? – styfle

Répondre

0

Vous appelez la fonction trop tôt dans le processus. Essayez:

<script> 
 
    (function() { 
 

 
    function fn() { 
 
     var element = document.getElementsByClassName('eventitem-backlink')[0]; 
 

 
     if (element) { 
 
     console.log('element found'); 
 
     element.setAttribute('href', '/archive/2017'); 
 
     } else { 
 
     console.log('element not found yet');  
 
     setTimeout(fn, 200); 
 
     } 
 
    } 
 

 
    fn(); 
 
    })(); 
 
</script>