首頁 >web前端 >H5教程 >HTML5網頁浮水印SDK的實作方法

HTML5網頁浮水印SDK的實作方法

不言
不言轉載
2019-04-03 11:10:124044瀏覽

這篇文章帶給大家的內容是關於HTML5網頁浮水印SDK的實作程式碼範例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

在網站瀏覽中,常需要網頁浮水印,以便防止使用者截圖或錄影畫面暴露敏感資訊後,追蹤使用者來源。如我們常用的釘釘軟體,聊天背景就會有你的名字。那麼如何實現網頁浮水印效果呢?

網頁水印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 + &#39; Arial&#39;;
         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(&#39;gulp&#39;),
      uglify = require("gulp-uglify"),
      babel = require("gulp-babel");
  gulp.task(&#39;minify&#39;, function () {
      return gulp.src(&#39;./src/index.js&#39;) // 要压缩的js文件
      .pipe(babel())
      .pipe(uglify())
      .pipe(gulp.dest(&#39;./dist&#39;)); //压缩后的路径
  });

【相關推薦:HTML5影片教學

以上是HTML5網頁浮水印SDK的實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除