浏览器标签页favicon设置数字角标

Posted STRIVE_LC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器标签页favicon设置数字角标相关的知识,希望对你有一定的参考价值。

        不管是在B/C端系统中,例如具有审批流或者购物网站的订单页面,我们可以将当前待办数或者用户的订单数显示到浏览器的标签页图标上,虽然只是一个小小的功能,但是也能让系统显得与众不同,更加人性化  如下图浏览器标签页数字角标

 

       安装  yarn add favico.js -S

        拿常用的vue项目举例,一般情况下,我们整个系统中只有部分页面需要显示角标的需求,其他页面是不需要显示的,在vue框架中如何实现?那我们就会用到vuex了

// store.js
import Vue from 'vue'
import VueX from 'vueX'
Vue.use(Vuex)
const Favico = require('favico.js')
const store = new Vuex.Store({
    state: {
        favico: new Favico({animation:'none'})
    },
    mutations: {
        setCount(state,num) {
            state.favico.badge(num)
        },
        reset(state) {
            state.favico.reset()
        }
   }
})
export default store


// router.js   因为只需要某些页面显示角标 所以我们需要在进入页面前,在路由卫士做重置处理
import store from './store.js'
import Router from 'vue-router'
router.beforeEach((to,from,next)=>{
        store.commit('reset')
        next()
})

// 显示角标页面
<template>
    <div>demo</div>
</template>
<script>
import {mapMutations} from 'vuex'
export default {
    mounted() {
        this.setCount(3)
    },
    methods: {
        ...mapMutations(['setCount'])
    }
}
</script>
favico基础用法
属性名说明默认值
bgColor徽标的背景颜色#d00
textColor徽标的文本颜色#fff
fontFamily徽标使用的文本sans-serif
fontStyle徽标的字体样式bold
type徽标的形状,可以选择circle或者rectanglecircle
position徽标在整个小图标的定位,可选的有up, down, left, upleftdown
animation徽标显示的动画,可选的有slide, fade, pop, popFade, noneslide

方法名说明
image()使用图像
video()使用视频
webcam()使用摄像头
......

 具体如何使用,可参考favico.js代码用法,也可参考github中favico.js的如下部分源码

例如该方法需要传入图片dom元素    
/**
		 * Set image as icon  设置图像
		 */
		var image = function (imageElement) {
			_readyCb = function () {
				try {
					var w = imageElement.width;
					var h = imageElement.height;
					var newImg = document.createElement('img');
					var ratio = (w / _w < h / _h) ? (w / _w) : (h / _h);
					newImg.setAttribute('crossOrigin', 'anonymous');
					newImg.onload=function(){
						_context.clearRect(0, 0, _w, _h);
						_context.drawImage(newImg, 0, 0, _w, _h);
						link.setIcon(_canvas);
					};
					newImg.setAttribute('src', imageElement.getAttribute('src'));
					newImg.height = (h / ratio);
					newImg.width = (w / ratio);
				} catch (e) {
					throw new Error('Error setting image. Message: ' + e.message);
				}
			};
			if (_ready) {
				_readyCb();
			}
		};



        /**
		 * Set video as icon  设置视频
		 */
		var webcam = function (action) {
			//UR
			if (!window.URL || !window.URL.createObjectURL) {
				window.URL = window.URL || {};
				window.URL.createObjectURL = function (obj) {
					return obj;
				};
			}
			if (_browser.supported) {
				var newVideo = false;
				navigator.getUserMedia = navigator.getUserMedia || navigator.oGetUserMedia || navigator.msGetUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
				_readyCb = function () {
					try {
						if (action === 'stop') {
							_stop = true;
							icon.reset();
							_stop = false;
							return;
						}
						newVideo = document.createElement('video');
						newVideo.width = _w;
						newVideo.height = _h;
						navigator.getUserMedia({
							video: true,
							audio: false
						}, function (stream) {
							newVideo.src = URL.createObjectURL(stream);
							newVideo.play();
							drawVideo(newVideo);
						}, function () {
						});
					} catch (e) {
						throw new Error('Error setting webcam. Message: ' + e.message);
					}
				};
				if (_ready) {
					_readyCb();
				}
			}

		};

相关资料 github地址: https://github.com/ejci/favico.js

以上是关于浏览器标签页favicon设置数字角标的主要内容,如果未能解决你的问题,请参考以下文章

为站点设置图标,显示在浏览器标签页

在浏览器的标签页显示网站标志图标(或指定图标)的方法

favicon.ico设置及chrome浏览器不显示的解决方案

如何为网站添加浏览器标签图标(favicon)?

禁止 favicon.ico 请求

如何给网页标题栏上添加图标(favicon.ico)(转)