Baseado na resposta de Gary Hole , mas altera os URLs no carregamento da página em vez de clicar.
Eu queria mostrar o URL usando css:
a:after {
content: attr(href);
}
Então, eu precisava que o href da âncora fosse convertido para conter o URL real que seria visitado.
function fixPortUrls(){
var nodeArray = document.querySelectorAll('a[href]');
for (var i = 0; i < nodeArray.length; i++) {
var a = nodeArray[i];
// a -> e.g.: <a href=":8080/test">Test</a>
var port = a.getAttribute('href').match(/^:(\d+)(.*)/);
//port -> ['8080','/test/blah']
if (port) {
a.href = port[2]; //a -> <a href="https://stackoverflow.com/test">Test</a>
a.port = port[1]; //a -> <a href="http://localhost:8080/test">Test</a>
}
}
}
Chame a função acima no carregamento da página.
ou em uma linha:
function fixPortUrls(){var na=document.querySelectorAll('a[href]');for(var i=0;i<na.length;i++){var a=na[i];var u=a.getAttribute('href').match(/^:(\d+)(.*)/);u&&a.href=u[2]&&a.port=u[1];}}
(Estou usando em for
vez de, forEach
portanto, funciona no IE7.)