h5网页水印SDK的实现代码示例


Posted in HTML / CSS onFebruary 19, 2019

在网站浏览中,常常需要网页水印,以便防止用户截图或录屏暴露敏感信息后,追踪用户来源。如我们常用的钉钉软件,聊天背景就会有你的名字。那么如何实现网页水印效果呢?

网页水印SDK,实现思路

1.能更具获取到的当前用户信息,如名字,昵称,ID等,生成水印
2.生成一个Canvas,覆盖整个窗口,并且不影响其他元素
3.可以修改字体间距,大小,颜色
4.不依赖Jquery
5.需要防止用户手动删除这个Canvas

实现分析

初始参数

size: 字体大小
color: 字体颜色
id: canvasId
text: 文本内容
density: 间距
clarity: 清晰度
supportTip: Canvas不支持的文字提示

生成Canvas

根据id生成Canvas,画布大小为window.screen大小,若存在原有老的Canvas,清除并重新生成。

画布固定定位在可视窗口,z-index为-1

let body = document.getElementsByTagName('body');
    let canvas = document.createElement('canvas');
    canvas.style.cssText= 'position: fixed;width: 100%;height: 100%;left:0;top:0;z-index: -1;';
    body[0].appendChild(canvas);

指纹生成算法

let canvas = document.getElementById(this.params.id);
      let cxt = canvas.getContext('2d');
      let times = window.screen.width * this.params.clarity / this.params.density;//横向文字填充次数
      let heightTimes = window.screen.height * this.params.clarity * 1.5/ this.params.density; //纵向文字填充次数
      cxt.rotate(-15*Math.PI/180); //倾斜画布
   
      for(let i = 0; i < times; i++) {
        for(let j = 0; j < heightTimes; j++) {
          cxt.fillStyle = this.params.color;
          cxt.font = this.params.size + ' Arial';
          cxt.fillText(this.params.text, this.params.density*i, j*this.params.density);
        }
      }

防止用户删除

使用定时器,定时检查指纹是否存在

let self = this;
    window.setInterval(function(){
    if (!document.getElementById(self.params.id)) {
    self._init();
    }
    }, 1000);

项目编译

使用glup编译

var gulp = require('gulp'),
        uglify = require("gulp-uglify"),
        babel = require("gulp-babel");
    gulp.task('minify', function () {
        return gulp.src('./src/index.js') // 要压缩的js文件
        .pipe(babel())
        .pipe(uglify())
        .pipe(gulp.dest('./dist')); //压缩后的路径
    });

指纹效果

h5网页水印SDK的实现代码示例

效果地址

https://tianshengjie.cn/apps/web_fingerprint

项目地址

Github: https://github.com/Jay-tian/web-fingerprint
Npm包: https://www.npmjs.com/package/web-fingerprint

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
css3.0 图形构成实例练习二
Mar 19 HTML / CSS
用css3写出气球样式的示例代码
Sep 11 HTML / CSS
css3的focus-within选择器的使用
May 11 HTML / CSS
Html5画布_动力节点Java学院整理
Jul 13 HTML / CSS
canvas绘制文本内容自动换行的实现代码
Jan 14 HTML / CSS
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
Jun 04 HTML / CSS
使用纯HTML5编写一款网页上的时钟的代码分享
Nov 16 HTML / CSS
多视角3D可旋转的HTML5 Logo动画
Mar 02 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
Jun 30 HTML / CSS
H5 canvas实现贪吃蛇小游戏
Jul 28 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
Feb 13 HTML / CSS
css3 filter属性的使用简介
Mar 31 HTML / CSS
canvas绘图按照contain或者cover方式适配并居中显示
Feb 18 #HTML / CSS
canvas 橡皮筋式线条绘图应用方法
Feb 13 #HTML / CSS
Canvas系列之滤镜效果
Feb 12 #HTML / CSS
canvas学习总结三之绘制路径-线段
Jan 31 #HTML / CSS
移动端Html5中百度地图的点击事件
Jan 31 #HTML / CSS
Html5页面内使用JSON动画的实现
Jan 29 #HTML / CSS
HTML5拍照和摄像机功能实战详解
Jan 24 #HTML / CSS
You might like
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
JSON取值前判断
2014/12/23 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
2018/07/25 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
Python爬取读者并制作成PDF
2015/03/10 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
Python 操作文件的基本方法总结
2017/08/10 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
对numpy中轴与维度的理解
2018/04/18 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
社会实践先进工作者事迹材料
2014/05/06 职场文书
音乐教师求职信
2014/06/28 职场文书