使用Javascript实现网页水印(非图片水印)

常见的就是公文系统、合同系统等。
大家常常关注的是网站图片增加水印,而很少关注页面水印。
刚去G
【菜科解读】
在一些B/S结构的应用系统中,有很多页面是需要有水印的。
常见的就是公文系统、合同系统等。
大家常常关注的是网站图片增加水印,而很少关注页面水印。
刚去Google了一圈,关于页面水印的文章的数量为几乎为0. 本文中,流牛木马就与大家一起交流一下有关制作网页水印的心得。
本文讨论以下的情形: 新增水印的方法需要用Javascript完成,并要求能够方便地加入到原有的页面中,不能影响到已有的功能。
1.2 预期目标
就图片水印实现方案来说,我们预期至少包括以下几个目标:
1. 实现悬浮、半透明的图片水印
2. 包含水印的页面,所有元素均为只读(不可写)
3. 在包含框架页面中,可以控制任意一个子页面或父页面的水印生成
4. 在页面放大、缩小(resize过程)后,需要在保证页面不刷新的前提下,重新生成适应页面大小的新水印,以保证所有内容都被水印覆盖,并且不会因水印图片范围过大而产生滚动条。
5. 支持IE6\7\8浏览器。
暂不考虑其他浏览器。
1.3 效果图
加密前:
加密后:
可以打开附件里的文件进行查看。
2 实现步骤2.1 基本构思
加密的过程是一个Javascript函数执行过程,所以我们首先应该考虑用Javascript操作DOM对象的方式。
在已有的HTML页面中,新建一个DOM对象在Body节点下。
该对象的长、宽均经过计算,保证在覆盖全部页面内容的同时又不产生滚动条。
将该对象覆盖到原有的页面之上,设置背景图,并设置为透明。
创建新DOM元素:
使用document对象里的createElement方法。
创建元素后,设置它的z-index为一个大整数,保证它能够比已有网页的最大z-index大,才能完成 覆盖 。
计算新对象大小:
利用三个DOM对象值: clientWidth 、scrollHeight与clientHeight.
网页中一般不会出现横向滚动条,故不使用scrollWidth.
而纵向的滚动条就很常见了。
为了保证页面内容全部覆盖,在未出现滚动条的时候,使用clientHeight,出现滚动条后,则使用scrollHeight。
设置透明:
利用Alpha值。
Alpha是IE支持的css filter。
2.2 应变细节
有一个小细节是很有意思的,前文也提过了,就是resize的过程。
试想,当一个页面打开的时候是550px 400px,那么自然会生成550px 400px大小的水印。
但当用户对它进行最大化时,页面没有刷新,不会重新执行生成水印的函数,那么以前生产的水印图片就太小了。
如下图所示的情况。
请注意,它的右侧、下侧都是没有水印的。
为了应对这种情况,我们就需要对body的onresize()函数进行处理。
如果以前定义没有onresize()函数,则直接添加onresize();如果以前有onresize()函数,则对之进行修改。
2.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 原有页面处理需要在原有的标签处加入一个onload方法。
如:
4 附件http://files.cnblogs.com/azure/%E6%B0%B4%E5%8D%B0.rar
_________________________________________________________________________________
关于扩展到非IE浏览器:
有很多朋友问起如何扩展到非IE浏览器。
我文中有提到设置水印图片透明的方式,那是一种仅适用于IE的方式。
要在其他浏览器中的设置图片透明,也是很容易的。
我还没有做测试,请各位看官自行参考这篇帖子:
http://dancewithnet.com/2009/09/06/css-opacity/
使用,Javascript,实现,网页,水印,非,图片,概述艾叶泡脚一周泡几次好?艾草泡脚使用方法
艾叶加红花是绝配可以缓解痛经哦。
艾叶泡脚一周泡几次 对于身体寒湿重的病人,可以每周用艾叶泡脚一次,并在用艾叶泡脚的同时,喝上一杯生姜红枣水,即可驱寒又不至于泻气。
如果没有明显上火的话,每天只用温水泡脚即可,大可不必用艾叶泡脚,以免产生适得其反的效果。
用艾叶泡脚一般泡个20分钟就够了,因为泡脚时血液会流向下肢,脑部容易供血不足。
有心血管疾病的人要适当减少泡脚时间,并控制水温在38-39C即可。
其实,艾叶泡脚不能经常泡,每周2到3次就好。
艾叶泡脚的时候一定要遵守注意事项,泡脚的时间不能够过长,千万不能够天天进行泡脚。
否则不仅不能够令身体恢复健康,反而容易出现亏损。
因为艾叶泡脚能将虚火、寒火往下引,就会引起头面部的气血两亏,供血不足,反而会引起头晕、头痛,及情绪上的变化等。
艾草怎么泡脚使用方法泡脚时最多不超过30分钟,避免出汗太多。
泡完脚后多喝温水,及时补充水分,泡脚时,水温不要太热,控制在40度左右,要求热而不烫。
掰一小块艾饼,加入适量沸水,浸泡3~8分钟,等待艾草的药性慢慢融于水中,再进行泡脚。
中途水温变凉,可加入适量温水调节。
(一块艾饼可分2~3次进行泡脚)泡脚时双脚可以互相搓揉,轻轻按摩,让艾草的药性更快进入身体。
泡完脚后,用掌心反复搓揉脚底心的涌泉穴,能够使心肾相交,帮助入眠。
儿童洗浴方法同样,只是水量适量增加。
艾叶加红花是绝配最常见的泡脚药材就是艾叶,艾叶别名“艾草”,它有浓烈芬香的气味,比较温和,可以食用;但是人们更看中的是它的药用价值,所以都会用它与红花搭配着泡脚,功效多着呢!1、有活血化淤、促进血液循环的功效。
2、有抗菌、抗病毒、抗过敏和增强免疫等功能。
3、其中,艾叶属于凉性的草药,还可以用来祛除脚气和脚癣。
4、红花艾叶泡脚还能去寒凉,祛湿,通经络。
5、可以缓解膝关节疼痛,排除毒素,对腰腿疼、膝关节疼都有一定的缓解作用。
使用公共马桶圈用酒精消毒够吗?马桶传染性病要满足什么条件
使用公共马桶圈用酒精消毒够吗够,但通常不需要在心理上我们会很担心用公共马桶被传染疾病,尤其是传播性疾病。
但和性病相关的病原体,在体外存活的时间都非常短,而且我们用马桶时和马桶接触的主要是臀部,所以几乎不会通过马桶传播性病。
上厕所最重要的是便后洗手,以防病从口入。
马桶使用酒精消毒,更多是为了给我们自己心理安慰。
马桶传染性病要满足什么条件马桶传染性病要满足三个条件:病毒能够在马桶上存活,这一点其实许多性病都无法做到,比如:梅毒,梅毒非常害怕消毒剂,任何消毒剂都能杀死它们。
艾滋病属于见光死,一旦离开人体就会死亡;淋病在体外很难存活。
相比之下尖锐湿疣的生存能力更强,它们有可能会通过间接传播,比如:与尖锐湿疣患者共用毛巾等。
患有性病的人刚刚坐过马桶,并遗留了足够多的病毒。
自己有开放性伤口,且自身免疫力低下。
其实空气中有形形色色的病毒和细菌等,它们之所以难以入侵人体,是因为人体是人类的第一屏障,健康完整的皮肤能够隔绝细菌、微生物进入人体,即便你的臀部受伤,只要结痂后,病毒和细菌也难以进入人体。
即便有少量病毒和细菌进入人体,只要你不是免疫力低下的人,或者是长期服用抑制免疫力的药物,即便有病毒进入人体,人体的免疫细胞也能够将它们清除,不会让人患病。
马桶想要传播疾病要同时满足以上3个条件,而且条件都非常苛刻,因此担心马桶感染疾病,尤其是性病的可以放心了。
反倒是踩在马桶上如厕,造成受伤的可能性会比马桶传播疾病的可能性更高。
怎样使用公厕最外侧的厕位可能最干净人们如厕时通常喜欢选择最安静的地方,所以公共卫生间内最靠里、最角落的厕位往往被用得最多、也是最脏的。
最靠外面的厕位反而最干净,不过其隐私性也最差。
当然,您也可以在清洁卫生和隐私安静之间折中选择。
尽量使用马桶纸垫别小看公共卫生间提供的薄薄一层马桶纸垫,它确实能有效抵御他人留下的有害细菌。
要想增强防护效果,您可选择多垫上几层马桶纸垫。
如果公共厕所里不提供纸垫,可以用卫生纸垫在马桶上。
需要提醒的是,很多人如厕时会蹲在马桶上,这样是极其不安全的。
避免直接用手去冲厕所除了自动感应冲水装置和脚踏式冲水开关之外,其他的冲水开关都极易使人沾染细菌等,最好避免直接用手去触动开关,可用卫生纸包裹着触动。
坐便器内投一张纸防迸溅如厕最尴尬的莫过于坐便器内的水花溅到臀部,不仅不舒服,还存在很严重的健康威胁。
如厕前可以先在坐便器里投张纸巾,可有效减轻冲力,避免水花溅起。
不过卫生纸别扔得太多,否则可能导致坐便器堵塞。
便后洗手至少30秒便后要认真洗手,尽量用肥皂和热水,至少要洗30秒钟,确保双手直到腕部都洗干净。
谨慎使用自动干手机为了节约纸张、保护环境,不少公共卫生间里都配了自动干手机。
可有的干手机是需要按下按钮启动的,这个按钮可能就沾了很多细菌。
此外,干手机吹出的热风可能是卫生间内污染的空气,反而会把细菌吹到洗干净的手上,外出时最好用自备手绢或纸巾擦手。
水龙头其实也很脏很多人认为卫生间里肯定是厕位最脏,其实也不尽然。
卫生间的地面、洗手池都可能很脏。
特别是洗手池,除了潮湿适合细菌滋生之外,水龙头把手也可能非常脏。
利用纸巾隔绝细菌纸巾不光是用来擦手的,还能在公共卫生间内提供额外的保护,比方说开关门时在门把手上先垫上纸巾,从而尽可能减少细菌危害。