当系统在浏览器中打开时,浏览器页签会根据主页配置中的title和favicon显示,如何能根据系统配置,动态的更换title和icon呢?
vue中的配置
vue项目中默认是在index.html页面上设置的
<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8" /><!--favicon 图标--><link rel="shortcut icon" type="image/x-icon" href="<%= BASE_URL %>favicon.ico" /><title>系统名称</title></head>
</html>
动态修改
在日常开发中,无论是单机部署还是saas应用,都会面临对系统的个性化设置,所以根据系统配置,动态修改title和icon是经常遇到的需求。
1、title
- 可以直接使用
document.title
来设置页面的标题 - 浏览器支持:所有主要浏览器都支持
2、favicon
Favicon 是显示在浏览器标签上的标志,一般为当前网站的Logo,用于快速识别系统或网站。
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
根据静态设置的原理,我们只要动态的修改ffavicon的href地址,就可以动态配置化显示了
代码示例:(vue+ts)
interface Element {href?: string;
}
const defaultLink: Element = {href: '',
};
/*** 修改网站Favicon * @param newIconPath Favicon 地址*/
export function changeFavicon(newIconPath: string) {if (!newIconPath) {return false;}let link: Element = defaultLink;link = document.querySelector('link[rel="shortcut icon"]') as Element;if (link && link.href) {link.href = newIconPath;} else {const newLink = document.createElement('link');newLink.rel = 'shortcut icon';newLink.href = newIconPath;document.head.appendChild(newLink);}
}
/*** 修改网站标题* @param title*/
export function changeTitle(title: string, icon: string) {if (title) {document.title = title;}if (icon) {changeFavicon(icon);}
}
在获取系统配置后,调用此方法,动态修改title和Favicon