根据加里·霍尔的回答,但更改页面加载时的网址,而不是单击时更改。
我想使用CSS显示网址:
a:after {
content: attr(href);
}
因此,我需要转换锚的href,以包含将要访问的实际URL。
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>
}
}
}
在页面加载时调用上述函数。
或一行:
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];}}
(我使用for
而不是forEach
在IE7中使用。)