使用此功能,您的網址轉換爲絕對:
function toAbsURL(s) {
var l = location, h, p, f, i;
if (/^\w+:/.test(s)) {
return s;
}
h = l.protocol + '//' + l.host + (l.port!=''?(':' + l.port):'');
if (s.indexOf('/') == 0) {
return h + s;
}
p = l.pathname.replace(/\/[^\/]*$/, '');
f = s.match(/\.\.\//g);
if (f) {
s = s.substring(f.length * 3);
for (i = f.length; i--;) {
p = p.substring(0, p.lastIndexOf('/'));
}
}
return h + p + '/' + s;
}
你可以使用
var base = document.getElementsByTagName('base')[0];
base.href = toAbsURL(base.href);
例http://jsfiddle.net/tEpkx/1/
除非你有來檢測瀏覽器,也和只爲IE瀏覽器運行它。其他瀏覽器將自動獲取由base
標記的href更新的window.location,並且此代碼段將再次更改它。因此,它寫成
<!--[if IE]>
<script type="text/javascript">
var base = document.getElementsByTagName('base')[0];
base.href = toAbsURL(base.href);
</script>
<![endif]-->
PS:<base />
是一個標籤,它不需要關閉一個。
更新如果它被設置包括端口號。
我發現IE瀏覽器的基礎href工作得很好,只要你不嘗試去一個級別。 – Joshua 2012-02-11 03:52:11
但我需要它去幾個級別 – Freewind 2012-02-11 03:55:31
他們生成靜態html頁面。我需要他們在普通的http服務器上工作,但url無法預先確定。 – Freewind 2012-02-11 04:07:35