html base的在IE9下無效的問題解決辦法

<base> 標籤爲頁面上的全部連接規定默認地址或默認目標。
在頁面的head標籤內 寫上<base href="/org/user/"/> 後,
當前頁面中 <a>、<img>、<link>、<form> 標籤相對與加上了base的href
例如:
在發送網絡請求時,css

<img src="small/icon.jpg">

就變成了html

<img src="/org/user/small/icon.jpg">

在IE十一、Chorme、Firefox下都好好的,到了IE9中,就不行了,哇~~~,而後在網上找了一些資料後,發現
原來在IE9中,base的href必須寫爲絕對路徑,纔會有效,如:web

<base href="https://blog.51cto/com/org/user/"/>

因此我在頁面中,我使用js動態的給base的href賦值。原本打算這樣寫瀏覽器

var b = document.getElementsByTagName('base')[0];
b.href = location.protocol+"//"+location.host+b.href;

可是發現經過js拿到的href屬性值就已是絕對路徑了網絡

b.href  = "https://blog.51cto/com/org/user/"

因此,我就這樣寫了,加個IE才能識別的標籤,等於在 ≤ IE9 版本的IE瀏覽器上執行這段jside

var b = document.getElementsByTagName('base')[0];
if(b) b.href=b.href;


下面是我這邊完整的頁面頭部代碼ui

<!DOCTYPE html>
<html lang="zh-Hans">
<head>
    <meta charset="UTF-8">
    <title>51CTO</title>
    <base href="/org/user/">
<!--[if lte IE 9]>
    <script>!function(){var b = document.getElementsByTagName('base')[0];if(b)b.href=b.href;}()</script>
<![endif]-->
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chorme=1">
    <meta name="renderer" content="webkit">
    <link rel="stylesheet" id="hint-css" href="/static/css/hint.min.css">
</head>
相關文章
相關標籤/搜索