Конвертировать ссылки JavaScript в стандартные ссылки - PullRequest
1 голос
/ 30 марта 2009

Я работаю с HTML, который имеет ссылки на JavaScript, как показано ниже:

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

Мне нужно заменить их стандартными тегами привязки, например:

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

Что было бы лучшим решением для достижения этой цели в Jython?

Спасибо

Eef

Ответы [ 4 ]

2 голосов
/ 30 марта 2009

Лучшим способом, вероятно, будет использование регулярных выражений.

1 голос
/ 30 марта 2009
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 голосов
/ 30 марта 2009

Примерно так может работать:

newhtml = oldhtml.replace(/href=".*?'(http:.*?)'.*?"/gi, 'href="$1"');
0 голосов
/ 30 марта 2009

Мое решение заключается в использовании библиотеки jQuery (просто для простоты использования вы можете просто выполнить код в чистом Javascript, зацикливаясь на якорях, потому что остальная часть кода - чистый Javascript).

Вот, пожалуйста, он проходит через якоря и устанавливает атрибут href в реальный атрибут в 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
        });
    });

Я проверил этот метод сам, и он работает как задумано. Наслаждайтесь!

...