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代码绘制可爱的Hello Kitty猫
Aug 03 HTML / CSS
CSS3教程(5):网页背景图片
Apr 02 HTML / CSS
用CSS禁用输入法(CSS3 UI规范)实例解析
Dec 04 HTML / CSS
移动端Web页面的CSS3 flex布局快速上手指南
May 31 HTML / CSS
CSS3实现同时执行倾斜和旋转的动画效果
Oct 27 HTML / CSS
css3实现文字首尾衔接跑马灯的示例代码
Oct 16 HTML / CSS
js实现移动端H5页面手指滑动刻度尺功能
Nov 16 HTML / CSS
html5小技巧之通过document.head获取head元素
Jun 04 HTML / CSS
HTML5 canvas基本绘图之图形变换
Jun 27 HTML / CSS
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
Dec 03 HTML / CSS
Html5定位终极解决方案
Feb 05 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
Sep 16 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
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
一个简洁的PHP可逆加密函数(分享)
2013/06/06 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
js innerHTML 改变div内容的方法
2013/08/03 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
Python列表切片常用操作实例解析
2020/03/10 Python
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
孝敬父母的活动方案
2014/08/31 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
思想作风建设心得体会
2014/10/22 职场文书
工作简报范文
2015/07/21 职场文书