Javascript 网页水印(非图片水印)实现代码 |
本文标签:Javascript,网页水印 1 概述 1.1 定义 在一些B/S结构的应用系统中,有很多页面是需要有水印的 。常见的就是公文系统、合同系统等 。大家常常关注的是网站图片增加水印,而很少关注页面水印 。刚去Google了一圈,关于页面水印的文章的数量为几乎为0. 本文中,流牛木马就与大家一起交流一下有关制作网页水印的心得 。 本文讨论以下的情形: 新增水印的方法需要用Javascript完成,并要求能够方便地加入到原有的页面中,不能影响到已有的功能 。 1.2 预期目标 就图片水印实现方案来说,我们预期至少包括以下几个目标: 1. 实现悬浮、半透明的图片水印 2. 包含水印的页面,所有元素均为只读(不可写) 3. 在包含框架页面中,可以控制任意一个子页面或父页面的水印生成 4. 在页面放大、缩小(resize过程)后,需要在保证页面不刷新的前提下,重新生成适应页面大小的新水印,以保证所有内容都被水印覆盖,并且不会因水印图片范围过大而产生滚动条 。 5. 支持IE6\7\8浏览器 。暂不考虑其他浏览器 。 1.3 效果图 加密前: ![]() 加密后:
复制代码 代码如下: function GetWaterMarked(targetObj,jpgUrl,targetStr ) { var windowobj=targetObj; var waterMarkPicUrl=jpgUrl; var controlWindowStr=targetStr; if(windowobj.document.getElementById("waterMark") != null) return; var m = "waterMark"; var newMark = windowobj.document.createElement("div"); newMark.id = m; newMark.style.position = "absolute"; newMark.style.zIndex = "9527"; newMark.style.top = "0px"; newMark.style.left = "0px"; newMark.style.width = windowobj.document.body.clientWidth; if( parseInt(windowobj.document.body.scrollHeight) > parseInt(windowobj.document.body.clientHeight) ) { newMark.style.height = windowobj.document.body.scrollHeight; }else { newMark.style.height = windowobj.document.body.clientHeight; } newMark.style.backgroundImage = "url("+ waterMarkPicUrl +")"; newMark.style.filter = "alpha(opacity=50)"; windowobj.document.body.appendChild(newMark); var markStr = "var sobj ="+controlWindowStr+".document.getElementById(waterMark);sobj.style.width ="+controlWindowStr+".document.body.clientWidth;sobj.style.height ="+controlWindowStr+".document.body.clientHeight;"; if(windowobj.document.body.onresize != null) { var oldResiae = windowobj.document.body.onresize.toString(); var oldResiaeStr = oldResiae.substr(oldResiae.indexOf("{")+1); var oldResiaeStr= oldResiaeStr.substr(0,oldResiaeStr.lastIndexOf("}")); oldResiaeStr+=";"+markStr; windowobj.document.body.onresize = new Function(oldResiaeStr); } else { windowobj.document.body.onresize = new Function(markStr); } } 3 原有页面处理 需要在原有的<body>标签处加入一个onload方法 。如: <body onload="GetWaterMarked(window,watermark.jpg,this)"> 4 附件 演示地址 http://demo.jb51.net/js/js_wartermark/baidu_mark.htm 附件下载 http://xiazai.jb51.net/201003/yuanma/js_wartermark.rar |