2009-03-30 6 views
1

ich mit HTML arbeite, die wie unten JavaScript-Links hat:Konvertieren JavaScript-Links zu Standard-Links

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

ich diese mit Standard-Anker-Tags wie so ersetzen müssen:

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

Was wäre die beste Lösung, um dies in Jython zu erreichen?

Dank

Eef

Antwort

2

Der beste Weg wäre wahrscheinlich regulären Ausdrücke zu verwenden.

0

Meine Lösung ist mit jQuery-Bibliothek (nur für die Benutzerfreundlichkeit können Sie einfach den Code in reinem Javascript durch Schleifen durch Anker tun, da der Rest des Codes reines Javascript ist).

Hier gehen Sie, Schleifen es durch die Anker und setzt das Attribut href auf den realen in 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 
     }); 
    }); 

ich diese Methode selbst getestet und es funktioniert wie vorgesehen. Genießen!

+0

Obwohl dies eine schöne Lösung ist, denke ich, es nur eine begrenzte Funktionalität. Ein wichtiger Grund zur Vermeidung von Javascript: Links ist die Unterstützung von Nicht-Javascript-Browsern. Offensichtlich wird Ihre Lösung dies nicht tun. –

+0

Ich wäre nicht in der Lage, dies zu tun, da ich JavaScript über den Inhalt nicht ausführen kann Ich bin nur auf Jython beschränkt:/ – RailsSon

+0

Ich bin sicher, Teil seines Zwecks ist SEO, und das wird sicherlich nicht dabei helfen. –

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

So etwas wie dies funktionieren könnte:

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