2010-03-31 26 views
5

Bağlantıları JavaScript ile bir web sayfasından nasıl kaldırırım? Google Chrome kullanıyorum. Denedim kodu:Tarayıcıda JavaScript ile bağlantıları kaldır

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

, bu şimdiye uyarıları ve aynı zamanda çalışan 2 şey var bu yüzden test kodu vardır. İlk uyarı "0", ikinci [Object NodeList] ve üçüncü "return" döndürür.

Benim html gövde şöyle görünür:

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

cevap

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

Bu çalışır. İçeriğin kontrolünde olduğum için, basit bir arama kullanarak tüm linkleri "link" olarak adlandırdım ve değiştirdim. Bir kez çalıştırırsanız, her birini alır. Bu yüzden, görebildiğiniz gibi, her şey bitene kadar tekrar ettim.

+0

Bir açıklama olarak, isim niteliği ayarlanmadığı sürece ankraj listesinde görünmez. Ayrıca, bir diğerini çıkarmasının sebebi, ilkini sildiğinizde, ikincisinin ilki olur, ikincisine geçersiniz, onu silersiniz, ve üçüncü ... Bu fikri alırsınız. Bunu o zaman anlamadım, sanırım. Ne işe yarayacak bir süre döngüdür. While (document.anchors.length> 0) doc.anc [0] .outHTML = doc.anc [0] .inHTML; ' –

1

çapa almak için

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

deneyin. Eğer jquery içerebilir Eğer

Sonra bu

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

Yaptım (--------) –

+0

@Arien Beller: D'oh! Maalesef, dokumanızda kullandığınız şey olan document.anchors'u kullanmaya çalıştığınızı gördüm. Bu, onları bulma ve kaldırma ile ilgili istediğiniz şeyi yapmalıdır, çünkü sahip olduğunuz öğeler öğelerin arasında yineleme yapmaz ve bu olsa bile, elemanın değil, bağlantı etiketinin metin içeriğini kaldırır. – Robusto

+0

İkisini de kullandım (document.anchors.length); (0) uyarı (document.getElementsByTagName ('a')); ([Object NodeList]) –

6

gibi bunları kaldırmak, sen

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

JQuery'yi nasıl edinebilirim ve nasıl kullanırım? –

+0

@Arlen - http://jquery.com/ Buradan talimatları indirin ve uygulayın –

+0

Ayrıca Google Barındırılan jQuery dosyasına da başvurabilirsiniz. http://code.google.com/apis/ajaxlibs/documentation/#jquery örnek: Buradaki yarar, kullanıcı paylaşılan dosyayı referans alan başka bir siteyi zaten ziyaret ettiyse, kullanıcının önbelleğinde bulunması muhtemeldir. –

5

ile basitçe yapabilir İşte hile yapar biraz vanilya JS var. Tüm span ile a etiketlerini değiştirir ve class ve id öznitelikleri (varsa) kopyaları.

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

Teşekkürler! Sadece küçük bir yorum - kırmak için 'i neoswf

+1

'<=', sınırların dışında bir dizi oluşturur. –

+0

Eğer 3 çapa childs varsa, döngüsünüz sadece iki kez – neoswf

İlgili konular