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 相关文章推荐
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
Apr 03 HTML / CSS
CSS3实现闪烁动画效果的方法
Feb 09 HTML / CSS
CSS3 实现的加载动画
Dec 07 HTML / CSS
网页中的电话号码如何实现一键直呼效果_附示例
Mar 15 HTML / CSS
基于 HTML5 Canvas实现 的交互式地铁线路图
Mar 05 HTML / CSS
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
Feb 01 HTML / CSS
使用HTML5原生对话框元素并轻松创建模态框组件
Mar 06 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
Dec 05 HTML / CSS
HTML5+lufylegend实现游戏中的卷轴
Feb 29 HTML / CSS
html5手机端页面可以向右滑动导致样式受影响的问题
Jun 20 HTML / CSS
Html5页面内使用JSON动画的实现
Jan 29 HTML / CSS
将SVG图引入到HTML页面的实现
Sep 20 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
php 检查电子邮件函数(自写)
2014/01/16 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
php中字符集转换iconv函数使用总结
2014/10/11 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
python事件驱动event实现详解
2018/11/21 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
linux面试题参考答案(5)
2016/11/05 面试题
酒店个人培训自我鉴定
2013/12/11 职场文书
学习党章思想汇报
2014/01/07 职场文书
医学生求职自荐书
2014/06/12 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
介绍信的写法
2015/01/31 职场文书
行政助理岗位职责
2015/02/10 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript