浏览器标签页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

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值