最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript 網(wǎng)頁(yè)水印(非圖片水印)實(shí)現(xiàn)代碼

 更新時(shí)間:2010年03月01日 18:17:21   作者:  
在一些B/S結(jié)構(gòu)的應(yīng)用系統(tǒng)中,有很多頁(yè)面是需要有水印的。常見的就是公文系統(tǒng)、合同系統(tǒng)等。
1 概述
1.1 定義
在一些B/S結(jié)構(gòu)的應(yīng)用系統(tǒng)中,有很多頁(yè)面是需要有水印的。常見的就是公文系統(tǒng)、合同系統(tǒng)等。大家常常關(guān)注的是網(wǎng)站圖片增加水印,而很少關(guān)注頁(yè)面水印。剛?cè)oogle了一圈,關(guān)于頁(yè)面水印的文章的數(shù)量為幾乎為0. 本文中,流牛木馬就與大家一起交流一下有關(guān)制作網(wǎng)頁(yè)水印的心得。
本文討論以下的情形: 新增水印的方法需要用Javascript完成,并要求能夠方便地加入到原有的頁(yè)面中,不能影響到已有的功能。
1.2 預(yù)期目標(biāo)
就圖片水印實(shí)現(xiàn)方案來(lái)說(shuō),我們預(yù)期至少包括以下幾個(gè)目標(biāo):
1. 實(shí)現(xiàn)懸浮、半透明的圖片水印
2. 包含水印的頁(yè)面,所有元素均為只讀(不可寫)
3. 在包含框架頁(yè)面中,可以控制任意一個(gè)子頁(yè)面或父頁(yè)面的水印生成
4. 在頁(yè)面放大、縮小(resize過(guò)程)后,需要在保證頁(yè)面不刷新的前提下,重新生成適應(yīng)頁(yè)面大小的新水印,以保證所有內(nèi)容都被水印覆蓋,并且不會(huì)因水印圖片范圍過(guò)大而產(chǎn)生滾動(dòng)條。
5. 支持IE6\7\8瀏覽器。暫不考慮其他瀏覽器。
1.3 效果圖
加密前:
clip_image002 

加密后:

clip_image004
可以打開附件里的文件進(jìn)行查看。
2 實(shí)現(xiàn)步驟
2.1 基本構(gòu)思
加密的過(guò)程是一個(gè)Javascript函數(shù)執(zhí)行過(guò)程,所以我們首先應(yīng)該考慮用Javascript操作DOM對(duì)象的方式。
在已有的HTML頁(yè)面中,新建一個(gè)DOM對(duì)象在Body節(jié)點(diǎn)下。該對(duì)象的長(zhǎng)、寬均經(jīng)過(guò)計(jì)算,保證在覆蓋全部頁(yè)面內(nèi)容的同時(shí)又不產(chǎn)生滾動(dòng)條。將該對(duì)象覆蓋到原有的頁(yè)面之上,設(shè)置背景圖,并設(shè)置為透明。
創(chuàng)建新DOM元素:
使用document對(duì)象里的createElement方法。創(chuàng)建元素后,設(shè)置它的z-index為一個(gè)大整數(shù),保證它能夠比已有網(wǎng)頁(yè)的最大z-index大,才能完成“覆蓋”。
計(jì)算新對(duì)象大?。?
利用三個(gè)DOM對(duì)象值: clientWidth 、scrollHeight與clientHeight.
網(wǎng)頁(yè)中一般不會(huì)出現(xiàn)橫向滾動(dòng)條,故不使用scrollWidth.
而縱向的滾動(dòng)條就很常見了。
為了保證頁(yè)面內(nèi)容全部覆蓋,在未出現(xiàn)滾動(dòng)條的時(shí)候,使用clientHeight,出現(xiàn)滾動(dòng)條后,則使用scrollHeight。
設(shè)置透明:
利用Alpha值。Alpha是IE支持的css filter。
2.2 應(yīng)變細(xì)節(jié)
有一個(gè)小細(xì)節(jié)是很有意思的,前文也提過(guò)了,就是resize的過(guò)程。
試想,當(dāng)一個(gè)頁(yè)面打開的時(shí)候是550px×400px,那么自然會(huì)生成550px×400px大小的水印。但當(dāng)用戶對(duì)它進(jìn)行最大化時(shí),頁(yè)面沒有刷新,不會(huì)重新執(zhí)行生成水印的函數(shù),那么以前生產(chǎn)的水印圖片就太小了。
如下圖所示的情況。請(qǐng)注意,它的右側(cè)、下側(cè)都是沒有水印的。
clip_image006 
為了應(yīng)對(duì)這種情況,我們就需要對(duì)body的onresize()函數(shù)進(jìn)行處理。如果以前定義沒有onresize()函數(shù),則直接添加onresize();如果以前有onresize()函數(shù),則對(duì)之進(jìn)行修改。
2.3 最終代碼
考慮到框架頁(yè)面需要考慮的情況,該方法包括三個(gè)參數(shù): 目標(biāo)頁(yè)面對(duì)象、目標(biāo)頁(yè)面字符串、 背景圖片。

復(fù)制代碼 代碼如下:

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 原有頁(yè)面處理
需要在原有的<body>標(biāo)簽處加入一個(gè)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

相關(guān)文章

  • JS如何顯示防盜鏈的外站圖片技巧示例

    JS如何顯示防盜鏈的外站圖片技巧示例

    通常在開發(fā)測(cè)試環(huán)節(jié),一些資源圖片會(huì)出現(xiàn)防盜鏈的錯(cuò)誤提示,本文就通過(guò)前端基礎(chǔ)技術(shù),實(shí)現(xiàn)基本的圖片跨站顯示效果,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 22種JavaScript中數(shù)組常用API總結(jié)

    22種JavaScript中數(shù)組常用API總結(jié)

    在前端開發(fā)中,數(shù)組是一種常見且重要的數(shù)據(jù)結(jié)構(gòu),本文主要介紹了前端中數(shù)組常用的API,包括添加、刪除、截取、合并、轉(zhuǎn)換等操作,希望對(duì)大家有所幫助
    2023-05-05
  • D3.js中強(qiáng)制異步文件讀取同步的幾種方法

    D3.js中強(qiáng)制異步文件讀取同步的幾種方法

    這篇文章主要給大家介紹了d3.js中強(qiáng)制異步文件讀取同步的幾種方法,文中給出了詳細(xì)的介紹和解決方法,對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-02-02
  • JS檢測(cè)window.open打開的窗口是否關(guān)閉

    JS檢測(cè)window.open打開的窗口是否關(guān)閉

    在開發(fā)中遇到需要在打開窗口的同時(shí)給父窗口添加遮罩防止用戶誤操作,而在窗口關(guān)閉時(shí)需要去掉父窗口的遮罩以便用戶操作。所以可以利用setInterval()來(lái)周期性的檢測(cè)打開的窗口是否關(guān)閉
    2017-06-06
  • JavaScript中的函數(shù)重載深入理解

    JavaScript中的函數(shù)重載深入理解

    將函數(shù)名作為指向函數(shù)的指針,有助于理解為什么ECMAScript中沒有函數(shù)重載的概念,需要的朋友可以參考下
    2014-08-08
  • js控制文本框輸入的字符類型方法匯總

    js控制文本框輸入的字符類型方法匯總

    這篇文章主要給大家匯總介紹了js控制文本框輸入的字符類型的各種方法,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • javascrip關(guān)于繼承的小例子

    javascrip關(guān)于繼承的小例子

    javascrip關(guān)于繼承的小例子,需要的朋友可以參考一下
    2013-05-05
  • js實(shí)現(xiàn)簡(jiǎn)單抽獎(jiǎng)功能

    js實(shí)現(xiàn)簡(jiǎn)單抽獎(jiǎng)功能

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡(jiǎn)單抽獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 深入探究JavaScript中作用域的底層機(jī)制

    深入探究JavaScript中作用域的底層機(jī)制

    引言?在?JavaScript?編程中,作用域是一個(gè)至關(guān)重要的概念,它決定了變量和函數(shù)的可訪問(wèn)范圍,本文將深入探討?JavaScript?作用域的底層原理,感興趣的小伙伴可以了解一下
    2025-01-01
  • 基于JS實(shí)現(xiàn)頁(yè)面視頻video標(biāo)簽禁止下載(下載按鈕+右擊菜單)

    基于JS實(shí)現(xiàn)頁(yè)面視頻video標(biāo)簽禁止下載(下載按鈕+右擊菜單)

    最近做項(xiàng)目遇到這樣的需求,禁止用戶瀏覽頁(yè)面的時(shí)候下載頁(yè)面的視頻,網(wǎng)上看到下載視頻的方法有兩種,本文對(duì)每種方法做詳細(xì)分析,對(duì)js禁止下載視頻相關(guān)知識(shí)感興趣的朋友一起看看吧
    2024-02-02

最新評(píng)論

辉县市| 茌平县| 阿拉善右旗| 无棣县| 南丰县| 雅江县| 都江堰市| 安康市| 汨罗市| 静宁县| 吴桥县| 和顺县| 邹城市| 墨竹工卡县| 建始县| 秦安县| 无棣县| 延吉市| 六枝特区| 新蔡县| 荆州市| 卢龙县| 仁寿县| 绥棱县| 桐梓县| 大连市| 石首市| 历史| 湘阴县| 虹口区| 札达县| 昆山市| 临澧县| 东港市| 铜梁县| 孝义市| 三穗县| 枣强县| 重庆市| 六枝特区| 焉耆|