2010-03-31 17 views
5

¿Cómo elimino enlaces de una página web con JavaScript? Estoy usando Google Chrome. El código que he probado es:Eliminar enlaces con JavaScript en el navegador

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'); 
} 

Por supuesto, este es el código de prueba, que es por eso que tengo las alertas y las 2 cosas tratando al mismo tiempo. La primera alerta devuelve "0" el segundo [Object NodeList] y la tercera devuelve "done".

Mi cuerpo html se ve así:

<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> 

Respuesta

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(); 
    } 
} 

Esto funciona. Como tengo el control del contenido, nombré a todos los anclajes como "enlace" mediante una simple búsqueda y reemplazo. Si lo ejecuta una vez, elimina a todos los demás. Así que lo hice repetir, como pueden ver, hasta que salgan todos.

+0

Como explicación, no aparecería en la lista de anclas a menos que tuviera el atributo de nombre establecido. Además, la razón por la que se elimina a todos los demás es porque cuando eliminas el primero, el segundo se convierte en el primero, y pasas al segundo, lo borras y el tercero ... Entiendes la idea. No entendí eso en aquel entonces, supongo. Lo que funcionaría bien es un ciclo while. 'While (document.anchors.length> 0) doc.anc [0] .outHTML = doc.anc [0] .inHTML;' –

1

Trate

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

para obtener los anclajes.

A continuación, puede eliminarlos como esto

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

Lo hice (--------) –

+0

@Arien Beller: D'oh! Lo siento, solo te vi tratando de usar document.anchors, que es lo que estás usando en tu loop de todos modos. Esto debería hacer lo que quieras para encontrarlos y eliminarlos, porque lo que tienes no es iterar a través de los elementos e incluso si lo fuera, solo eliminaría los contenidos de texto de la etiqueta de anclaje, no el elemento en sí. – Robusto

+0

Utilicé ambas alertas (document.anchors.length); (0) alerta (document.getElementsByTagName ('a')); ([Object NodeList]) –

6

Si puede incluir jQuery, puede hacerlo simplemente con

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

¿Cómo puedo obtener JQuery y cómo lo uso? –

+0

@Arlen - http://jquery.com/ Descargue y siga las instrucciones allí –

+0

También puede hacer referencia al archivo jQuery alojado de Google. http://code.google.com/apis/ajaxlibs/documentation/#jquery ejemplo: El beneficio es que si su usuario ya visitó otro sitio que hace referencia al archivo compartido, es probable que esté en la caché del usuario. –

5

Aquí hay algo de JS vainilla que hace el truco. Todo lo que hace es reemplazar las etiquetas a con span y copias sobre los atributos class y id (si existen).

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

¡Gracias! Solo un pequeño comentario: 'i neoswf

+1

'<=' crearía un error de matriz fuera de límites. –

+0

si tienes 3 anclas para niños, tu ciclo solo se ejecutará dos veces – neoswf

Cuestiones relacionadas