2009-03-30 8 views
1

Je travaille avec le langage HTML qui a javascript liens comme ci-dessous:convertir les liens JavaScript aux liens standards

<a href="javascript:openExternalLink(5542, true, 'http://www.websitedomain.com')">Links Text Here</a> 

je dois remplacer par des balises d'ancrage standards comme ceci:

<a href="http://www.websitedomain.com">Links Text Here</a> 

Quel serait la meilleure solution pour réaliser ceci dans Jython?

Merci

Eef

Répondre

2

La meilleure façon serait probablement d'utiliser des expressions régulières.

0

Ma solution est d'utiliser la bibliothèque jQuery (juste pour la facilité d'utilisation, vous pouvez simplement faire le code en Javascript pur en passant par des ancres, car le reste du code est du pur Javascript).

Ici, vous allez, il boucle à travers les points d'ancrage et définit l'attribut href au vrai dans DOM

$(document).ready(function() 
    { 
     $("a").each(function() 
     { 
      var href = $(this).attr('href'); 
      var urlStart = href.indexOf('http://'); //start point of the substring cut 
      var urlStop = href.lastIndexOf("'"); //end point of the substring cut 

      var realUrl = href.substring(urlStart, urlStop); //this is the real URL 

      $(this).attr({'href': realUrl}); //now replace and we're ready to go 
     }); 
    }); 

Je me suis testé cette méthode et il fonctionne comme prévu. Prendre plaisir!

+0

Bien que ce soit une bonne solution, je pense qu'il est seulement des fonctionnalités limitées. Une raison importante pour éviter javascript: links est de supporter les navigateurs non-javascript. Évidemment, votre solution ne le fera pas. –

+0

Je ne serais pas capable de faire cela car je ne peux pas exécuter JavaScript sur le contenu Je suis limité à Jython:/ – RailsSon

+0

Je suis sûr qu'une partie de son objectif est SEO, et cela ne va certainement pas aider avec ça. –

1
var i= 0, A= document.links, who, url; 
while(A[i]){ 
    who= A[i++]; 
    url= who.href || ''; 
    if(url.indexOf('javascript:openExternalLink')== 0){ 
     who.href= url.substring(url.indexOf("'"), url.lastIndexOf("'")+1); 
    } 
} 
0

Quelque chose comme cela pourrait fonctionner:

newhtml = oldhtml.replace(/href=".*?'(http:.*?)'.*?"/gi, 'href="$1"'); 
Questions connexes