2010-03-31 3 views
5

Comment puis-je supprimer des liens d'une page Web avec JavaScript? J'utilise Google Chrome. Le code que j'ai essayé est:Supprimer les liens avec JavaScript dans le navigateur

function removehyperlinks() { 
    try { 
     alert(document.anchors.length); 
     alert(document.getElementsByTagName('a')); 
     for(i=0;i=document.anchors.length;i++) { 
      var a = document.anchors[i]; 
      a.outerHTML = a.innerHTML; 
      var b = document.getElementsByTagName('a'); 
      b[i].outerHTML = b[i].innerHTML; 
     } 
    } catch(e) { alert (e);} 
    alert('done'); 
} 

Bien sûr, cela est le code de test, ce qui est la raison pour laquelle je les alertes et 2 choses en essayant en même temps. La première alerte renvoie "0" la seconde [Object NodeList] et la troisième renvoie "done".

Mon corps HTML ressemble à ceci:

<body onload="removehyperlinks()"> 
<ol style="text-align:left;" class="messagelist"> 
    <li class="accesscode"><a href="#">General information, Updates, &amp; Meetings<span class="extnumber">141133#</span></a> 
     <ol> 
      <li><a href="#">...</a></li> 
      <li><a href="#">...</a></li> 
      <li><a href="#">...</a></li> 
      <li><a href="#">...</a></li> 
      <li><a href="#">...</a></li> 
      <li><a href="#">...</a></li> 
      <li><a href="#">...</a></li> 
      <li><a href="#">...</a></li> 
      <li start="77"><a href="#"">...</a></li> 
      <li start="88"><a href="#">...</a></li> 
      <li start="99"><a href="#">...</a></li> 
     </ol> 
    </li> 
    </ol> 
</body> 

Répondre

1
function removehyperlinks() { 
    try { 
     for(i=0;i<document.anchors.length;i++) { 
      document.anchors[i].outerHTML = document.anchors[i].innerHTML 
     } 
    } catch(e) { alert ("try2:" + e);} 
} 
function runner() { 
    for(i=1;document.anchors.length > 0;i++) { 
     //alert('run ' + i + ':' + document.anchors.length); 
     removehyperlinks(); 
    } 
} 

Cela fonctionne. Comme je suis en contrôle du contenu, j'ai nommé toutes les ancres "lien" en utilisant une simple recherche et remplacer. Si vous l'exécutez une fois, il en sortira tous les autres. Donc, je l'ai juste répété, comme vous pouvez le voir, jusqu'à ce qu'ils soient tous sortis.

+0

À titre d'explication, il n'apparaîtrait pas dans la liste des ancres à moins que l'attribut name ne soit défini. En outre, la raison pour laquelle il prend tous les autres est parce que lorsque vous supprimez le premier, le second devient le premier, et vous passez à la seconde, supprimez cela, et le troisième ... Vous avez l'idée. Je ne l'avais pas compris à l'époque, je suppose. Ce qui fonctionnerait bien est une boucle while. 'While (document.anchors.length> 0) doc.anc [0] .outHTML = doc.anc [0] .inHTML;' –

1

Essayez

var ary = document.getElementsByTagName("a"); 

pour obtenir les points d'ancrage.

Ensuite, vous pouvez les supprimer comme ce

for (var i=0;i<ary.length;i++) { 
    // brain cramp: document.removeElement(ary[i]); 
    ary[i].parentNode.removeChild(ary[i]); 
} 
+0

Je l'ai fait (--------) –

+0

@Arien Beller: D'oh! Désolé, je vous ai vu essayer d'utiliser document.anchors, ce que vous utilisez de toute façon dans votre boucle. Cela devrait faire ce que vous voulez à propos de les trouver et les supprimer, parce que ce que vous avez ne fait pas l'itération à travers les éléments et même si c'était il supprimerait simplement le contenu du texte de l'étiquette d'ancrage, pas l'élément lui-même. – Robusto

+0

J'ai utilisé les deux alert (document.anchors.length); (0) alert (document.getElementsByTagName ('a')); ([Object NodeList]) –

6

Si vous pouvez inclure jquery, vous pouvez le faire simplement avec

$('document').ready(function(){ 
    $('a').contents().unwrap(); 
});​​​​​​​​​​​​​​​​​ 
+0

Comment puis-je utiliser JQuery et comment l'utiliser? –

+0

@Arlen - http://jquery.com/ Téléchargez et suivez les instructions –

+0

Vous pouvez également faire référence au fichier jQuery hébergé par Google. http://code.google.com/apis/ajaxlibs/documentation/#jquery exemple: L'avantage est que si votre utilisateur a déjà visité un autre site référençant le fichier partagé, il est probable qu'il se trouve dans le cache de l'utilisateur. –

5

Voici quelques JS vanille qui fait l'affaire. Tout ce qu'il fait est de remplacer a étiquettes avec span et des copies sur les attributs class et id (si elles existent).

var anchors = document.getElementsByTagName("A"); 

for (var i=0; i < anchors.length; i++) { 
    var span = document.createElement("SPAN"); 
    if (anchors[i].className) { 
     span.className = anchors[i].className; 
    } 

    if (anchors[i].id) { 
     span.id = anchors[i].id; 
    } 

    span.innerHTML = anchors[i].innerHTML; 

    anchors[i].parentNode.replaceChild(span, anchors[i]); 
} 
+0

Merci! Juste un petit commentaire - 'i neoswf

+1

'<=' créerait un tableau hors limites erreur. –

+0

si vous avez 3 ancres childs, votre boucle ne fonctionnera que deux fois – neoswf

Questions connexes