網(wǎng)頁(yè)代碼是制作者的勞動(dòng)成果,有些人卻可以通過(guò)瀏覽器或其他手段來(lái)盜用網(wǎng)頁(yè)的原代碼,所以我們需要一些防范的措施。
------------------------------------------------------------------------------------------------------
1. oncontextmenu="window.event.returnvalue=false" //將徹底屏蔽鼠標右鍵
<table border oncontextmenu=return(false)><td>no</table> //可用于Table
------------------------------------------------------------------------------------------------------
2. <body onselectstart="return false"> //取消選取、防止復制
------------------------------------------------------------------------------------------------------
3. onpaste="return false" //不準粘貼
------------------------------------------------------------------------------------------------------
4. oncopy="return false;" oncut="return false;" // 防止復制
------------------------------------------------------------------------------------------------------
5. //防止被人frame
<SCRIPT LANGUAGE=javascript><!--
if (top.location != self.location)top.location=self.location;
// --></SCRIPT>
------------------------------------------------------------------------------------------------------
6. <noscript><iframe src=*.html></iframe></noscript> //網(wǎng)頁(yè)將不能被另存為
------------------------------------------------------------------------------------------------------
7. //改變連接是狀態(tài)欄的顯示內容
〈a href=" ------------------------------------------------------------------------------------------------------ 8. //禁止網(wǎng)頁(yè)中目標對象被下載(如圖片) 下面的代碼將幫助你禁止網(wǎng)頁(yè)中目標對象被下載: <a href="javascript:void(0)" onMouseDown="alert(‘對不起!圖片不能下載!‘)"> </a> ------------------------------------------------------------------------------------------------------ 9. //頁(yè)面禁止刷新完全 <script language="Javascript"><!-- 10. //如何徹底禁止查看網(wǎng)頁(yè)源代碼 轉自:http://www.ccw.com.cn/htm/app/aprog/01_12_11_3.asp 網(wǎng)頁(yè)制作者經(jīng)常遇到精心制作的Javascript特效被別人抄襲,而自己對此卻無(wú)可奈何的情況。面對這一困擾,有沒(méi)有方法可以解決呢?使用ASP、JSP等服務(wù)器端編程技術(shù)可以實(shí)現對網(wǎng)頁(yè)源代碼的保護,但目前國內網(wǎng)站所提供的免費個(gè)人主頁(yè)空間一般都不提供對服務(wù)器端編程的支持,所以對于這些用戶(hù),要禁止訪(fǎng)問(wèn)者查看網(wǎng)頁(yè)源代碼就只能在客戶(hù)端編程上下工夫了。
最好在pop出來(lái)的窗口里用,沒(méi)工具欄的
<body onkeydown="KeyDown()" onbeforeunload="location=location"
oncontextmenu="event.returnValue=false">
function KeyDown(){
if ((window.event.altKey)&&
((window.event.keyCode==37)||
(window.event.keyCode==39))){ alert("請訪(fǎng)問(wèn)我的主頁(yè)");
event.returnValue=false;
}
if ((event.keyCode==8)|| (event.keyCode==116)){ //屏蔽 F5 刷新鍵
event.keyCode=0;
event.returnValue=false;
}
if ((event.ctrlKey)&&(event.keyCode==78)){ //屏蔽 Ctrl+n
event.returnValue=false;
}
if ((event.shiftKey)&&(event.keyCode==121)){ //屏蔽 shift+F10
event.returnValue=false;
}
}
</script>
</body>
------------------------------------------------------------------------------------------------------
查看源代碼的方式
要禁止訪(fǎng)問(wèn)者查看網(wǎng)頁(yè)源代碼,我們首先要了解一下查看源代碼的方式(以IE 5.0為例)。一是右鍵菜單方式; 二是窗口菜單欄查看方式,即選擇"查看"*"源文件"方式。要徹底禁止訪(fǎng)問(wèn)者查看網(wǎng)頁(yè)源代碼,就必須屏蔽這2種查看源代碼的方式。
屏蔽右鍵菜單查看方式
現在,很多網(wǎng)頁(yè)采用如下代碼屏蔽右鍵菜單:
< Script Language=javascript>
function Click(){
if(event.button==2){alert
(‘版權所有(C)2001 XXX工作室‘);
}}
document.onmousedown=Click;
< /Script>
實(shí)際上"button"有8個(gè)屬性值(即0~7),"button==2"只是表示按下鼠標右鍵,所以上述代碼實(shí)際上只能限制點(diǎn)擊鼠標右鍵的情況,至于其他5種方式,如同時(shí)按左右鍵、中間鍵、左和中間鍵、右和中間鍵和按所有鍵的情況就不能限制了。所以在彈出版權信息提示窗口后(如圖3所示),按"確定"按鈕仍然會(huì )出現快捷菜單。針對這種情況,其實(shí)只要將"event.button==2"改為"event.button!=1"就可以做到無(wú)論用何種鼠標點(diǎn)擊方式,均不出現右鍵菜單了。
不過(guò)即使進(jìn)行上述修改后,也并不能徹底禁止右鍵菜單的出現。用戶(hù)只要在頁(yè)面上按下右鍵,出現版權信息提示窗口后,不松開(kāi)右鍵(即繼續保持按下?tīng)顟B(tài)),再將鼠標指針移動(dòng)到版權信息提示窗口的"確定"按鈕上,同時(shí)按下左鍵,然后再松開(kāi)鼠標左鍵,提示窗口即消失。此時(shí)再松開(kāi)鼠標右鍵,右鍵菜單彈出,這樣就又可以查看網(wǎng)頁(yè)源文件了。
那么有沒(méi)有辦法徹底禁止右鍵快捷菜單的出現呢?其實(shí)只要將上述代碼做如下修改即可。
< Script Language=javascript>
function Click(){
alert(‘版權所有(C)2001 XXX工作室‘);
window.event.returnValue=false;
}
document.oncontextmenu=Click;
< /Script>
這樣無(wú)論采取什么方式點(diǎn)擊鼠標,都不會(huì )再出現快捷菜單了。不過(guò)值得注意的是,如果訪(fǎng)問(wèn)者直接在瀏覽器地址欄中鍵入"javascript:alert(document.oncontextmenu=‘‘)",就可以解除對右鍵菜單的屏蔽。對這類(lèi)訪(fǎng)問(wèn)者怎樣防范呢?其實(shí),把地址欄隱藏掉就可以了,具體方法見(jiàn)本文介紹的"屏蔽窗口菜單欄查看方式"。
屏蔽窗口菜單欄查看方式
制作過(guò)網(wǎng)頁(yè)的朋友都知道,對新打開(kāi)窗口的各種屬性可以進(jìn)行控制,具體包括控制菜單欄、滾動(dòng)條及地址欄是否可見(jiàn)等。如果把父窗口關(guān)閉,并將新打開(kāi)窗口的菜單欄和地址欄隱藏,不就可以屏蔽窗口菜單欄查看方式了嗎?實(shí)現代碼如下:
< Head>
< Object id=closes type="application/x-oleobject"
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
< Param name="Command" value="Close">
< /Object>
< /Head>
< Body>
< Script Language=javascript>
closes.Click()
window.open("XXX.htm","","menubar=no,location=no,
scrollbars=yes,resizable=yes")
< /Script>
< /Body>
這種方法的原理就是首先將自己網(wǎng)站的首頁(yè)制作成index.htm形式,把首頁(yè)設計成一個(gè)過(guò)渡頁(yè)。然后將自己的真正主頁(yè)制作成default.htm形式(具體實(shí)現過(guò)程見(jiàn)本文所附源代碼)。這樣訪(fǎng)問(wèn)者無(wú)論如何也無(wú)法查看網(wǎng)頁(yè)源代碼了。這不僅僅保護了您的版權,也為進(jìn)一步開(kāi)發(fā)提供了保障。通過(guò)此方法,您可以結合Cookie技術(shù),真正做到限制用戶(hù)瀏覽網(wǎng)頁(yè),從而避免主頁(yè)資料被非法訪(fǎng)問(wèn)者訪(fǎng)問(wèn)。
附:源代碼清單
index.htm
< Head>
< Object id=closes type="application/x-oleobject" classid="clsid:
adb880a6-d8ff-11cf-9377-00aa003b7a11">
< Param name="Command" value="Close">
< /Object>
< /Head>
< Body>
< Script Language=javascript>
closes.Click()
window.open("defalut.htm","","menubar=no,location=no,
scrollbars=yes,resizable=yes")
< /Script>
< /Body>
default.htm
< Html>
< Head>
< Script Language=javascript>
function Click(){
alert(‘版權所有(C)2001 XXX工作室‘);
window.event.returnValue=false;
}
document.oncontextmenu=Click;
< /Script>
< /Head>
< Body>
... ...
< /Body>
< /Html>
注: 本文涉及內容在Windows 98/IE 5.0下測試通過(guò)。
聯(lián)系客服