网页制作者经常遇到精心制作的javascript特效被别人抄袭,而自己对此却无可奈何的情况。面对这
一困扰,有没有方法可以解决呢?使用ASP、JSP等服务器端编程技术可以实现对网页源代码的保护,但
目前国内网站所提供的免费个人主页空间一般都不提供对服务器端编程的支持,所以对于这些用户,要
禁止访问者查看网页源代码就只能在客户端编程上下工夫了。
查看源代码的方式
要禁止访问者查看网页源代码,我们首先要了解一下查看源代码的方式(以IE5.0为例)。一是右
键菜单方式;二是窗口菜单栏查看方式,即选择"查看"*"源文件"方式。要彻底禁止访问者查看网页源
代码,就必须屏蔽这2种查看源代码的方式。
屏蔽右键菜单查看方式
现在,很多网页采用如下代码屏蔽右键菜单:
functionClick(){
if(event.button==2){alert
('版权所有(C)2001XXX工作室');
}}
document.οnmοusedοwn=Click;
实际上"button"有8个属性值(即0~7),"button==2"只是表示按下鼠标右键,所以上述代码实际上
只能限制点击鼠标右键的情况,至于其他5种方式,如同时按左右键、中间键、左和中间键、右和中间
键和按所有键的情况就不能限制了。所以在弹出版权信息提示窗口后(如图3所示),按"确定"按钮仍然
会出现快捷菜单。针对这种情况,其实只要将"event.button==2"改为"event.button!=1"就可以做到无
论用何种鼠标点击方式,均不出现右键菜单了。
不过即使进行上述修改后,也并不能彻底禁止右键菜单的出现。用户只要在页面上按下右键,出
现版权信息提示窗口后,不松开右键(即继续保持按下状态),再将鼠标指针移动到版权信息提示窗口
的"确定"按钮上,同时按下左键,然后再松开鼠标左键,提示窗口即消失。此时再松开鼠标右键,右键
菜单弹出,这样就又可以查看网页源文件了。
那么有没有办法彻底禁止右键快捷菜单的出现呢?其实只要将上述代码做如下修改即可。
functionClick(){
alert('版权所有(C)2001XXX工作室');
window.event.returnValue=false;
}
document.οncοntextmenu=Click;
这样无论采取什么方式点击鼠标,都不会再出现快捷菜单了。不过值得注意的是,如果访问者直
接在浏览器地址栏中键入"javascript:alert(document.οncοntextmenu='')",就可以解除对右键菜单
的屏蔽。对这类访问者怎样防范呢?其实,把地址栏隐藏掉就可以了,具体方法见本文介绍的"屏蔽窗
口菜单栏查看方式"。
屏蔽窗口菜单栏查看方式
制作过网页的朋友都知道,对新打开窗口的各种属性可以进行控制,具体包括控制菜单栏、滚动
条及地址栏是否可见等。如果把父窗口关闭,并将新打开窗口的菜单栏和地址栏隐藏,不就可以屏蔽窗
口菜单栏查看方式了吗?实现代码如下:
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
closes.Click()
window.open("XXX.htm","","menubar=no,location=no,
scrollbars=yes,resizable=yes")
这种方法的原理就是首先将自己网站的首页制作成index.htm形式,把首页设计成一个过渡页。然
后将自己的真正主页制作成default.htm形式(具体实现过程见本文所附源代码)。这样访问者无论如
何也无法查看网页源代码了。这不仅仅保护了您的版权,也为进一步开发提供了保障。通过此方法,您
可以结合Cookie技术,真正做到限制用户浏览网页,从而避免主页资料被非法访问者访问。
附:源代码清单
index.htm
adb880a6-d8ff-11cf-9377-00aa003b7a11">
closes.Click()
window.open("defalut.htm","","menubar=no,location=no,
scrollbars=yes,resizable=yes")
default.htm
functionClick(){
alert('版权所有(C)2001XXX工作室');
window.event.returnValue=false;
}
document.οncοntextmenu=Click;
......
为保护作者的著作版权,有时需要在网页添加禁止复制的功能。只需在与之间添加以下代码就可达到目
的:
-
functionclick(){
alert('谢绝复制!请谅解!')}
functionclickl(){
if(event.button==2){alert('谢绝复制!请谅解!')}}
functionctrlkeydown(){
if(event.ctrlkey){alert('不当的拷贝将损坏您的爱机!')}}
document.οnkeydοwn=ctrlkeydown;
document.onselectstart=click;
document.οnmοusedοwn=clickl;
以上这个防复制的方法好是好,不过道高一尺魔高一丈。以下就是魔高一丈的表现:打开浏览器,工具
→Internet选项(0)→安全→自定义级别,将“脚本”的三个设置项均设为“禁用”,再沿路确定回去
,刷新网页,OK!不过这样设置以后网页的很多特效就看不到了,所以拷贝好所需内容后最好还是重新
设置一下那三个脚本为启用状态。