2009-04-16 10 views
0

Je souhaite désactiver les liens dans une page.Comment désactiver un lien dans IE6

J'ai utilisé la fonction ci-dessous, qui fonctionne dans FF3 & IE7, mais il ne fonctionne pas sur IE6.

$(document).ready(function() { 
    $("a").attr("href", "") 
      .unbind("click") 
      .click(function() { return false }); 
}); 
+0

Où le lien doit-il aller après avoir exécuté ce code? – alex

Répondre

0

essayer

window.onload= function(){ 
     DisableEnableLinks(true) 
} 

function DisableEnableLinks(xHow){ 
    objLinks = document.links; 
    for(i=0;i<objLinks.length;i++){ 
    objLinks[i].disabled = xHow; 
    //link with onclick 
    if(objLinks[i].onclick && xHow){ 
     objLinks[i].onclick = new Function("return false;" + objLinks[i].onclick.toString().getFuncBody()); 
    } 
    //link without onclick 
    else if(xHow){ 
     objLinks[i].onclick = function(){return false;} 
    } 
    //remove return false with link without onclick 
    else if(!xHow && objLinks[i].onclick.toString().indexOf("function(){return false;}") != -1){    
     objLinks[i].onclick = null; 
    } 
    //remove return false link with onclick 
    else if(!xHow && objLinks[i].onclick.toString().indexOf("return false;") != -1){ 
     strClick = objLinks[i].onclick.toString().getFuncBody().replace("return false;","") 
     objLinks[i].onclick = new Function(strClick); 
    } 
    } 
} 

String.prototype.getFuncBody = function(){ 
    var str=this.toString(); 
    str=str.replace(/[^{]+{/,""); 
    str=str.substring(0,str.length-1); 
    str = str.replace(/\n/gi,""); 
    if(!str.match(/\(.*\)/gi))str += ")"; 
    return str; 
} 

avec la permission de http://radio.javaranch.com/pascarello/2005/05/17/1116355421179.html

+4

Saint bejesus. Un peu d'overkill surtout quand jQuery est disponible, non? –

+0

@Paolo, haha, d'accord – alex

3

Qu'en est-ce?

$(document).ready(function() { 
    $("a").removeAttr('href'); 
}); 
+2

muy bien. plus uno. :) –

+0

Oh viens c'est l'espagnol basique! "Très bien, plus un." =) –

+0

+1 sur réponse et commentaire: p –

0

Dans certaines sous-versions de IE, il existe un bogue qui est la source de votre problème. Il ignore le résultat de l'événement onclick. Alors que peux-tu faire? Eh bien pas un moyen parfait mais IE6 accepte également la propriété "désactivée" pour les liens. Donc, essayez aussi de définir la propriété "disabled" pour l'obtenir. Cela n'affectera pas les autres navigateurs.

0

Tout clic sur une balise d'ancrage génère un événement de cliquage qui fait une bulle jusqu'au corps. Le plus simple serait de simplement mettre un gestionnaire de clic sur un corps qui ne fait rien et retourne false si l'élément cible est une ancre.