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 中的@keyframes介绍
Sep 02 HTML / CSS
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
Nov 11 HTML / CSS
一款利用纯css3实现的超炫3D表单的实例教程
Dec 01 HTML / CSS
使用CSS3设计地图上的雷达定位提示效果
Apr 05 HTML / CSS
利用CSS3的线性渐变linear-gradient制作边框的示例
Jun 02 HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
Apr 11 HTML / CSS
css3实现蒙版弹幕功能
Jun 18 HTML / CSS
网页中的电话号码如何实现一键直呼效果_附示例
Mar 15 HTML / CSS
canvas三角函数模拟水波效果的示例代码
Jul 03 HTML / CSS
Html5实现如何在两个div元素之间拖放图像
Mar 29 HTML / CSS
html5 利用canvas实现超级玛丽简单动画
Sep 06 HTML / CSS
css display table 自适应高度、宽度问题的解决
May 07 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
php5 and xml示例
2006/11/22 PHP
PHP分页显示制作详细讲解
2006/12/05 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
PHP图片上传代码
2013/11/04 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
javascript学习网址备忘
2007/05/29 Javascript
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
2013/04/23 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
JS实现div居中示例
2014/04/17 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
详解Python中DOM方法的动态性
2015/04/11 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
html5 div布局与table布局详解
2016/11/16 HTML / CSS
宝宝周岁宴答谢词
2014/01/26 职场文书
租赁协议书范本
2014/04/22 职场文书
交通违章检讨书
2014/09/21 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
《颐和园》教学反思
2016/02/19 职场文书