1、<base>标签
当使用时,base 元素必须出现在文档的 head 内,在任何用于引用外部资源的元素之前。
此元素在 Internet Explorer 3.0 及以上版本的 HTML 中可用,在 Internet Explorer 4.0 及以上版本的脚本中可用。
此元素不改变内容的显示格式。
此元素不需要关闭标签。
<html>
<head>
<title>javascript change url</title>
<BASE HREF="http://news.sina.com.cn/c/2006-10-17/155910257355s.shtml"/>
</head>
<body>
<a href="/logo.gif">/logo.gif</a>
<a href="../logo.gif">../logo.gif</a>
<a href="logo.gif">logo.gif</a>
<a href="http://www.sina.com.cn/">http://www.sina.com</a>
<input type="button" value="click me" onClick="show()"/>
<script language="javascript">
function show() {
var link = document.all.tags("a");
for(var i=0;i<link.length;i++) {
alert(link[i]);
}
}
</script>
</body>
</html>
2、Uri类
这个类可以通过定义baseurl和相对url的方式来生成新的url,这样就可以将网页中的相对地址转变为绝对地址。
代码示例:
Uri uri = new Uri("http://www.ita.doc.gov/td/industry/otea/trade-detail/");
Uri newuri = new Uri(uri,"Latest-December/Exports/index.html");
MessageBox.Show(newuri.AbsoluteUri);
Uri newuri2 = new Uri(newuri,"01/index.html");
MessageBox.Show(newuri2.AbsoluteUri);
Uri newuri3 = new Uri(newuri,"http://www.sina.com.cn");
MessageBox.Show(newuri3.AbsoluteUri);
可以用统一的方式来获得网页中链接的url。
Uri newuri = new Uri(baseuri,path);
baseuri是当前网页的url,path可以是相对地址,也可以是绝对地址。
3、正则表达式
//for relative path
string sURL = "http://www.microsoft.com/aaa/";
s = Regex.Replace(s,
@"<a\s+href\s*=\s*(['""])(?!http://|/)([^>]+)\1([^>]*)>",
"<a href=$1" + sURL + "$2$1$3>",
RegexOptions.Singleline | RegexOptions.IgnoreCase);
//for absolute path
sURL = "http://www.microsoft.com/";
s = Regex.Replace(s,
@"<a\s+href\s*=\s*(['""])(?!http://)/([^>]+)\1([^>]*)>",
"<a href=$1" + sURL + "$2$1$3>",
RegexOptions.Singleline | RegexOptions.IgnoreCase);