Adrian



BS开发中常用的Javascript技术 
一、验证类 
1、数字验证内 
  1.1 整数 
  1.2 大于0的整数 (用于传来的ID的验证) 
  1.3 负整数的验证 
  1.4 整数不能大于iMax 
  1.5 整数不能小于iMin 
2、时间类 
  2.1 短时间,形如 (13:04:06) 
  2.2 短日期,形如 (2003-12-05) 
  2.3 长时间,形如 (2003-12-05 13:04:06) 
  2.4 只有年和月。形如(2003-05,或者2003-5) 
  2.5 只有小时和分钟,形如(12:03) 
3、表单类 
  3.1 所有的表单的值都不能为空 
  3.2 多行文本框的值不能为空。 
  3.3 多行文本框的值不能超过sMaxStrleng 
  3.4 多行文本框的值不能少于sMixStrleng 
  3.5 判断单选框是否选择。 
  3.6 判断复选框是否选择. 
  3.7 复选框的全选,多选,全不选,反选 
  3.8 文件上传过程中判断文件类型 
4、字符类 
  4.1 判断字符全部由a-Z或者是A-Z的字字母组成 
  4.2 判断字符由字母和数字组成。 
  4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 
  4.4 字符串替换函数.Replace(); 
5、浏览器类 
  5.1 判断浏览器的类型 
  5.2 判断ie的版本 
  5.3 判断客户端的分辨率 
   
6、结合类 
  6.1 email的判断。 
  6.2 手机号码的验证 
  6.3 身份证的验证 
   

二、功能类 

1、时间与相关控件类 
  1.1 日历 
  1.2 时间控件 
  1.3 万年历 
  1.4 显示动态显示时钟效果(文本,如OA中时间) 
  1.5 显示动态显示时钟效果 (图像,像手表)  
2、表单类 
  2.1 自动生成表单 
  2.2 动态添加,修改,删除下拉框中的元素 
  2.3 可以输入内容的下拉框 
  2.4 多行文本框中只能输入iMax文字。如果多输入了,自动减少到iMax个文字(多用于短信发送) 
   
3、打印类 
  3.1 打印控件 
4、事件类 
  4.1 屏蔽右键 
  4.2 屏蔽所有功能键 
  4.3 --> 和<-- F5 F11,F9,F1 
  4.4 屏蔽组合键ctrl+N 
5、网页设计类 
  5.1 连续滚动的文字,图片(注意是连续的,两段文字和图片中没有空白出现) 
  5.2 html编辑控件类 
  5.3 颜色选取框控件 
  5.4 下拉菜单 
  5.5 两层或多层次的下拉菜单 
  5.6 仿IE菜单的按钮。(效果如rongshuxa.com的导航栏目) 
  5.7 状态栏,title栏的动态效果(例子很多,可以研究一下) 
  5.8 双击后,网页自动滚屏 
6、树型结构。 
  6.1 asp+SQL版 
  6.2 asp+xml+sql版 
  6.3 java+sql或者java+sql+xml 
7、无边框效果的制作 
8、连动下拉框技术 
9、文本排序 
10,画图类,含饼、柱、矢量贝滋曲线 
11,操纵客户端注册表类 
12,DIV层相关(拖拽、显示、隐藏、移动、增加) 
13,TABLAE相关(客户端动态增加行列,模拟进度条,滚动列表等) 
14,各种<object classid=>相关类,如播放器,flash与脚本互动等 
16, 刷新/模拟无刷新 异步调用类(XMLHttp或iframe,frame) 

 

 

<script language="JavaScript"> 
<!-- 
function check(text){ 
var checkstr,iMax=5,iMin=3 
checkstr="isInt:"+(parseInt(text)==text)+"\n" 
checkstr+="isID:"+((parseInt(text)==text)&&(text>=0))+"\n" 
checkstr+="小于"+iMax+":"+((parseInt(text)==text)&&(text<iMax))+"\n" 
checkstr+="大于"+iMin+":"+((parseInt(text)==text)&&(text>iMin))+"\n" 
alert(checkstr) 

//--> 
 
<form method=post action=""> 
<input type="text" id="text1" onchange="check(this.value)"> 
</form> 

 

4、事件类 
  4.1 屏蔽右键 
      在body标签里加上oncontextmenu=self.event.returnValue=false   
  4.2 屏蔽所有功能键 

  4.3 --> 和<-- F5 F11,F9,F1 

  4.4 屏蔽组合键ctrl+N 

<script language=javascript> 
function KeyDown(){    
  if ((window.event.altKey)&& 
      ((window.event.keyCode==37)||   //屏蔽 Alt+ 方向键 ← 
       (window.event.keyCode==39))){  //屏蔽 Alt+ 方向键 → 
     alert("不准你使用ALT+方向键前进或后退网页!"
     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; 
     } 
  if (event.keyCode==122){ //屏蔽 F11 
     event.returnValue=false; 
     } 
  } 
只要知道keyCode即可屏蔽所有功能键 


一、验证类 
1、数字验证内 
  1.1 整数 
      /^(-|\+)?\d+$/.test(str) 
  1.2 大于0的整数 (用于传来的ID的验证) 
      /^\d+$/.test(str) 
  1.3 负整数的验证 
      /^-\d+$/.test(str) 
2、时间类 
  2.1 短时间,形如 (13:04:06) 
      function isTime(str) 
      { 
        var a = str.match(/^(\d{1,2})(?(\d{1,2})\2(\d{1,2})$/); 
        if (a == null) {alert('输入的参数不是时间格式'); return false;} 
        if (a[1]>24 || a[3]>60 || a[4]>60) 
        { 
          alert("时间格式不对"
          return false 
        } 
        return true; 
      } 
  2.2 短日期,形如 (2003-12-05) 
      function strDateTime(str) 
      { 
         var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);  
         if(r==null)return false;  
         var d= new Date(r[1], r[3]-1, r[4]);  
         return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]); 
      } 
  2.3 长时间,形如 (2003-12-05 13:04:06) 
      function strDateTime(str) 
      { 
        var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2})\d{1,2})\d{1,2})$/;  
        var r = str.match(reg);  
        if(r==null)return false;  
        var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);  
        return  

(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&
d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()== 

r[7]); 
      } 
  2.4 只有年和月。形如(2003-05,或者2003-5) 
  2.5 只有小时和分钟,形如(12:03) 
3、表单类 
  3.1 所有的表单的值都不能为空 
      <input onblur="if(this.value.replace(/^\s+|\s+$/g,')==')alert('不能为空!')"> 
  3.2 多行文本框的值不能为空。 
  3.3 多行文本框的值不能超过sMaxStrleng 
  3.4 多行文本框的值不能少于sMixStrleng 
  3.5 判断单选框是否选择。 
  3.6 判断复选框是否选择. 
  3.7 复选框的全选,多选,全不选,反选 
  3.8 文件上传过程中判断文件类型 
4、字符类 
  4.1 判断字符全部由a-Z或者是A-Z的字字母组成 
      <input onblur="if(/[^a-zA-Z]/g.test(this.value))alert('有错')"> 
  4.2 判断字符由字母和数字组成。 
      <input onblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有错')"> 
  4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 
      /^([a-zA-z_]{1})([\w]*)$/g.test(str) 
  4.4 字符串替换函数.Replace(); 
5、浏览器类 
  5.1 判断浏览器的类型 
      window.navigator.appName 
  5.2 判断ie的版本 
      window.navigator.appVersion 
  5.3 判断客户端的分辨率 
      window.screen.height;  window.screen.width; 
   
6、结合类 
  6.1 email的判断。 
      function ismail(mail) 
      { 
        return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)
[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail)); 
      } 
  6.2 手机号码的验证 
  6.3 身份证的验证 
      function isIdCardNo(num) 
      { 
        if (isNaN(num)) {alert("输入的不是数字!"; return false;} 
        var len = num.length, re;  
        if (len == 15) 
          re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/); 
        else if (len == 18) 
          re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/); 
        else {alert("输入的数字位数不对!"; return false;} 
        var a = num.match(re); 
        if (a != null) 
        { 
          if (len==15) 
          { 
            var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]); 
            var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&
D.getDate()==a[5]; 
          } 
          else 
          { 
            var D = new Date(a[3]+"/"+a[4]+"/"+a[5]); 
            var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&
D.getDate()==a[5]; 
          } 
          if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对!"; return false;} 
        } 
        return true; 
      } 


3.7 复选框的全选,多选,全不选,反选 
<form name=hrong> 
<input type=checkbox name=All onclick="checkAll('mm')">全选<br/> 
<input type=checkbox name=mm onclick="checkItem('All')"><br/> 
<input type=checkbox name=mm onclick="checkItem('All')"><br/> 
<input type=checkbox name=mm onclick="checkItem('All')"><br/> 
<input type=checkbox name=mm onclick="checkItem('All')"><br/> 
<input type=checkbox name=mm onclick="checkItem('All')"><br/><br/> 


<input type=checkbox name=All2 onclick="checkAll('mm2')">全选<br/> 
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/> 
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/> 
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/> 
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/> 
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/> 

</form> 

<SCRIPT LANGUAGE="JavaScript"> 
function checkAll(str) 

  var a = document.getElementsByName(str); 
  var n = a.length; 
  for (var i=0; i<n; i++) 
  a[i].checked = window.event.srcElement.checked; 

function checkItem(str) 

  var e = window.event.srcElement; 
  var all = eval("document.hrong."+ str); 
  if (e.checked) 
  { 
    var a = document.getElementsByName(e.name); 
    all.checked = true; 
    for (var i=0; i<a.length; i++) 
    { 
      if (!a[i].checked){ all.checked = false; break;} 
    } 
  } 
  else all.checked = false; 

</SCRIPT> 

3.8 文件上传过程中判断文件类型 
<input type=file onchange="alert(this.value.match(/^(.*)(\.)(.{1,8})$/)[3])"> 

 

不断地清空剪贴板: 
<body onload="setInterval('clipboardData.setData(\'Text\',\'\')',100)"> 


<script language="JavaScript" type="text/JavaScript"> 
//先复制一样东西,或者文本或者图片 
if(clipboardData.getData("Text"||clipboardData.getData("HTML"||
clipboardData.getData("URL"

alert("有效行为"

 


全屏技术: 
真正的全屏页面解决之道!(全代码)  
真正全屏解决之道:  
1.htm  
  
  
<title>无标题文档</title>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
  

<body onload="window.open('fullscreen.htm',','fullscreen=1,scroll=no');">  
  
  


fullscreen.htm  
  
  
<title>无标题文档</title>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
<script language="JavaScript1.2">   
<!--   
function opensmallwin(myurl){   
var w2=300;//想弹出窗口的宽度   
var h2=100;//想弹出窗口的高度   
var w3=window.screen.width/2-w2/2;   
var h3=window.screen.height/2-h2/2;   
window.open(myurl,'small','toolbar=no,location=no,directories=no,status=no,menubar=no,
scrollbars=no,resizable=0,width='+ w2 +',height='+ h2 +',left='+ w3 +',top='+ h3 +');   
}   
//-->   

<!--  
function modelesswin(url,mwidth,mheight){  
  if (document.all&&window.print)  
    eval('window.external.m2_blocked(url,"","help:0;resizable:0;status:0;center:1;
scroll:0;dialogWidth:'+mwidth+'px;dialogHeight:'+mheight+'px"')   
  else  
    eval('window.open(url,"","width='+mwidth+'px,height='+mheight+'px,resizable=1,
scrollbars=1"')  
  }  
//-->  

   
  

<body  scroll="no">  
<div align="right"><a href="javascript:" onclick="window.close()">关闭
</a> </div>  
<p></P>  
<div align="right"><a href="javascript:" onclick="opensmallwin('login.htm')">登录
</a> </div>  

<p></P>  
<div align="center"><a href="javascript:" 
onclick="modelesswin('login.htm',300,160)">用模态登录窗口</a> </div>  
  
  


login.htm  
  
  
<title>用户登录</title>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">  

<style type="text/css">  
<!--  
body {  
   background-color: #EAEAEA;  
   font-family: Arial, Helvetica, sans-serif;  
   font-size: 12px;  
   line-height: 24px;  
   color: #336699;  
}  
input.boxline {  
   width: 100px;  
   font-family: "Times New Roman", "Times", "serif";  
   font-size: 9pt;  
   border: 1px solid #669999;  
   height: 18px;  

}  

input.whiteline {    
   font-size: 12px; border: 1px #999999 solid  
}  
-->  
</style>  
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">  
<table width="100%" height="100%" border="0" cellpadding="0"
 cellspacing="14" bgcolor="#CCCCCC">  
  <tr valign="top">  
    <td width="10%" nowrap  align="right"><b>用户名:</b></td>  
    <td width="90%"><input name="textfield1" type="text" size="25"
 class="whiteline"></td>  
  </tr>  
  <tr valign="top">  
    <td nowrap align="right"><b>密 码:</b></td>  
    <td><input name="textfield12" type="password" size="25" 
class="whiteline"></td>  
  </tr>  
  <tr valign="top">  
    <td> </td>  
    <td><input type="submit" name="Submit" value="登  录" 
class="boxline"></td>  
  </tr>  
</table>  
  
  


自动关掉原窗口:  


  
  
<title>无标题文档</title>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
<style type="text/css">  
<!--  
body {  
   margin-left: 0px;  
   margin-top: 0px;  
   margin-right: 0px;  
   margin-bottom: 0px;  
}  
-->  
</style>  
  

<body onload="window.open('fullscreen.htm',','fullscreen=1,scroll=no');
window.opener=null;window.close()">  
<input type=button value=关闭 onclick="window.opener=null;window.close()">   
<!-- IE5.5+ 不会有弹出提示 -->   

<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 
height=0 width=0></OBJECT>   
<input type=button value=关闭窗口 onclick=document.all.WebBrowser.ExecWB(45,1)>   
  
  

关键是在onload事件中加入:  
window.opener=null;window.close()  


预读图片: 
<SCRIPT LANGUAGE="JavaScript"> 

<!-- This script and many more are available free online at --> 
<!-- The JavaScript Source!! <a href=::URL::http://javascript.internet.com  
target=_blank>::URL::http://javascript.internet.com  --> 

<!-- Begin 

image1 = new Image(); 
image1.src = "image1.gif"; 

image2 = new Image(); 
image2.src = "image2.gif"; 

// End --> 
 

 

关于两个网页刷新交互的问题  
JS处理方法:  

a.htm  

<a href="b.htm" target=blank>发表留言</a>  
  
alert("wwwwwwwwwwwwwwwwwwwwwwwwww";  
  

b.htm  

<script language="javascript">  
//window.opener.location.reload();刷新父窗口  
//window.opener.location="2.htm"//重定向父窗口到2.htm页  
function closewindow()  
{  
window.opener.location.reload();  
self.close();  
window.opener.document.write("sssssssssssssssssss";  
}  
  
<a href="b.htm" target=blank onclick="closewindow();">关闭</a>  

 

后台处理方法:  

private btnForSubmit(Object sender,EventArgs e)  
{  
 .............  
 Response.Write("window.opener.document.execCommand('refresh');
window.opener=';window.close();";  
//string str="window.opener.document.execCommand('refresh');
window.opener=';window.close();";  
//this.RegisterStartupScript("mycode",str);  
external.m2_blocked()、external.m2_blocked()方法使用详解 

 Javascript有许多内建的方法来产生对话框,如:window.alert(), 
window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如: 

  external.m2_blocked() (IE 4+ 支持) 
  external.m2_blocked() (IE 5+ 支持) 


 window.external.m2_blocked()方法用来创建一个显示HTML内容的模态对话框,
由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。 
 window.external.m2_blocked()方法用来创建一个显示HTML内容的非模态对话框。 

 当我们用external.m2_blocked()打开窗口时,不必用window.close()去关闭它,
当以非模态方式[IE5]打开时, 打开对话框的窗口仍可以进行其他的操作,即对话框
不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]
方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗
口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动
窗口的下面。 

使用方法如下: 
 vReturnValue=window.external.m2_blocked(sURL [,vArguments] [,sFeatures]) 
 vReturnValue=window.external.m2_blocked(sURL [,vArguments] [,sFeatures]) 
参数说明: 
 sURL 
 必选参数,类型:字符串。用来指定对话框要显示的文档的URL。 
 vArguments 
 可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。
对话框通过window.dialogArguments来取得传递进来的参数。 
 sFeatures 
 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,
用分号“;”隔开。 
  dialogHeight 对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth
 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px
做单位。 
   dialogWidth: 对话框宽度。 
   dialogLeft: 距离桌面左的距离。 
   dialogTop: 离桌面上的距离。 
   center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。 
   help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。 
   resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。 
   status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]
或no[Modal]。 
  scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。 

  还有几个属性是用在HTA中的,在一般的网页中一般不使用。 
  dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。
默认为no。 
  edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。 
  unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。 

 传入参数: 
 要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,
最大为4096个字符。也可以传递对象,例如: 

 test1.htm 
 ==================== 
  
  var mxh1 = new Array("mxh","net_lover","孟子E章" 
  var mxh2 = window.open("about:blank","window_mxh" 
  // 向对话框传递数组 
  window.external.m2_blocked("test2.htm",mxh1) 
  // 向对话框传递window对象 
  window.external.m2_blocked("test3.htm",mxh2) 
  

 test2.htm 
 ==================== 
  
  var a = window.dialogArguments 
  alert("您传递的参数为:" + a) 
  

 test3.htm 
 ==================== 
  
  var a = window.dialogArguments 
  alert("您传递的参数为window对象,名称:" + a.name) 
  

 可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。
例如: 

 test4.htm 
 =================== 
  
  var a = window.external.m2_blocked("test5.htm" 
  for(i=0;i<a.length;i++) alert(a[i]) 
  

 test5.htm 
 =================== 
  
 function sendTo() 
 { 
  var a=new Array("a","b" 
  window.returnValue = a 
  window.close() 
 } 
  
  
 <form> 
  <input value="返回" type=button onclick="sendTo()"> 
 </form> 

 常见问题: 
 1,如何在模态对话框中进行提交而不新开窗口? 
 如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以
制定target为该iframe的name。对于IE4+,你可以用高度为0的frame来作:例子, 

 test6.htm 
 =================== 
  
  window.external.m2_blocked("test7.htm" 
  

 test7.htm 
 =================== 
 if(window.location.search) alert(window.location.search) 
 <frameset rows="0,*"> 
  <frame src="about:blank"> 
  <frame src="test8.htm"> 
 </frameset> 

 test8.htm 
 =================== 
 <form target="_self" method="get"> 
 <input name=txt value="test"> 
 <input type=submit> 
 </form> 
  
 if(window.location.search) alert(window.location.search) 
  
 2,可以通过::URL::http://servername/virtualdirname/test.htm?name=mxh方式直接向
对话框传递参数吗? 
 答案是不能。但在frame里是可以的。 
//屏蔽 F5 刷新键 


function document.onkeydown() 

    var k = window.event.keyCode; 
    if (k == 116)                   //屏蔽 F5 刷新键 
    { 
        window.event.keyCode    = 0; 
        window.event.returnValue= false; 
    } 



<script language="Javascript"> 
 //屏蔽鼠标右键、Ctrl+N、Shift+F10、F5刷新、退格键 
 //屏蔽F1帮助 
function window.onhelp() 

   return false 

function KeyDown() 

  //alert(event.keyCode); 
   //屏蔽 Alt+ 方向键 ← 屏蔽 Alt+ 方向键 → 
  if ((window.event.altKey)&&((window.event.keyCode==37)||
(window.event.keyCode==39))) 
  {   
     //alert("不准你使用ALT+方向键前进或后退网页!"
     event.returnValue=false; 
  } 
  //屏蔽退格删除键,屏蔽 F5 刷新键,Ctrl + R 
  if ((event.keyCode==116)||(event.ctrlKey && event.keyCode==82)) 
  {  
     event.keyCode=0; 
     event.returnValue=false; 
  }  
   
  //屏蔽 Ctrl+n 
  if ((event.ctrlKey)&&(event.keyCode==78)) 
  {   
     event.returnValue=false; 
  } 
   
  //屏蔽 shift+F10 
  if ((event.shiftKey)&&(event.keyCode==121)) 
  {  
     event.returnValue=false; 
  } 
   
  //屏蔽 shift 加鼠标左键新开一网页 
  if (window.event.srcElement.tagName == "A" && window.event.shiftKey)  
  { 
    window.event.returnValue = false; 
  } 
       
   //屏蔽Alt+F4 
  if ((window.event.altKey)&&(window.event.keyCode==115)) 
  { 
      window.external.m2_blocked("about:blank","","dialogWidth:1px;dialogheight:1px"
      return false; 
  } 
   
  //屏蔽Ctrl+A 
  if((event.ctrlKey)&&(event.keyCode==65)) 
  { 
   return false; 
  } 
     

 
 
</HTML>  


kyan 发表于 >2005-4-13 9:33:39 保存该日志到本地 [全文] [评论] [引用] [推荐] [档案] [推给好友]

2005-1-26
Meta标签详解 [转]

Meta标签详解
  引言 
  您的个人网站即使做得再精彩,在“浩瀚如海”的网络空间中,也如一叶扁舟不易为人发现,如何推广
个人网站,人们首先想到的方法无外乎以下几种:  
  ● 在搜索引擎中登录自己的个人网站  
  ● 在知名网站加入你个人网站的链接 
  ● 在论坛中发帖子宣传你的个人网站 
  很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧!   META标签是HTML语言HEAD区的一个辅助性标签,它位于HTML文档头部的<HEAD>标记和<TITLE>标记之间,它提供用户不可见的信息。meta标签通常用来为搜索引擎robots定义页面主题,或者是定义用户浏览器上的cookie;它可以用于鉴别作者,设定页面格式,标注内容提要和关键字;还可以设置页面使其可以根据你定义的时间间隔刷新自己,以及设置RASC内容等级,等等。 

  详细介绍 
  下面介绍一些有关 标记的例子及解释。 
  META标签分两大部分:HTTP标题信息(HTTP-EQUIV)和页面描述信息(NAME)。 

  ★HTTP-EQUIV 
  HTTP-EQUIV类似于HTTP的头部协议,它回应给浏览器一些有用的信息,以帮助正确和精确地显示网页内容。常用的HTTP-EQUIV类型有: 

  1、Content-Type和Content-Language (显示字符集的设定) 
  说明:设定页面使用的字符集,用以说明主页制作所使用的文字已经语言,浏览器会根据此来调用相应的字符集显示page内容。 
  用法:<Meta http-equiv="Content-Type" Content="text/html; Charset=gb2312">
      <Meta http-equiv="Content-Language" Content="zh-CN"> 
  注意: 该META标签定义了HTML页面所使用的字符集为GB2132,就是国标汉字码。如果将其中的“charset=GB2312”替换成“BIG5”,则该页面所用的字符集就是繁体中文Big5码。当你浏览一些国外的站点时,IE浏览器会提示你要正确显示该页面需要下载xx语支持。这个功能就是通过读取HTML页面META标签的Content-Type属性而得知需要使用哪种字符集显示该页面的。如果系统里没有装相应的字符集,则IE就提示下载。其他的语言也对应不同的charset,比如日文的字符集是“iso-2022-jp ”,韩文的是“ks_c_5601”。
      
  Content-Type的Content还可以是:text/xml等文档类型;
  Charset选项:ISO-8859-1(英文)、BIG5、UTF-8、SHIFT-Jis、Euc、Koi8-2、us-ascii, x-mac-roman, iso-8859-2, x-mac-ce, iso-2022-jp, x-sjis, x-euc-jp,euc-kr, iso-2022-kr, gb2312, gb_2312-80, x-euc-tw, x-cns11643-1,x-cns11643-2等字符集;Content-Language的Content还可以是:EN、FR等语言代码。 
  2、Refresh (刷新) 
   说明:让网页多长时间(秒)刷新自己,或在多长时间后让网页自动链接到其它网页。
   用法:<Meta http-equiv="Refresh" Content="30">
      <Meta http-equiv="Refresh" Content="5; Url=::URL::http://www.xia8.net">
   注意:其中的5是指停留5秒钟后自动刷新到URL网址。 
  3、Expires (期限) 
   说明:指定网页在缓存中的过期时间,一旦网页过期,必须到服务器上重新调阅。
   用法:<Meta http-equiv="Expires" Content="0">
      <Meta http-equiv="Expires" Content="Wed, 26 Feb 1997 08:21:57 GMT">
   注意:必须使用GMT的时间格式,或直接设为0(数字表示多少时间后过期)。 
  4、Pragma (cach模式) 
   说明:禁止浏览器从本地机的缓存中调阅页面内容。
   用法:<Meta http-equiv="Pragma" Content="No-cach">
   注意:网页不保存在缓存中,每次访问都刷新页面。这样设定,访问者将无法脱机浏览。 
  5、Set-Cookie (cookie设定) 
  说明:浏览器访问某个页面时会将它存在缓存中,下次再次访问时就可从缓存中读取,以提高速度。当你希望访问者每次都刷新你广告的图标,或每次都刷新你的计数器,就要禁用缓存了。通常HTML文件没有必要禁用缓存,对于ASP等页面,就可以使用禁用缓存,因为每次看到的页面都是在服务器动态生成的,缓存就失去意义。如果网页过期,那么存盘的cookie将被删除。
   用法:<Meta http-equiv="Set-Cookie" Content="cookievalue=xxx; expires=Wednesday,
       21-Oct-98 16:14:21 GMT; path=/">
   注意:必须使用GMT的时间格式。 
  6、Window-target (显示窗口的设定) 
   说明:强制页面在当前窗口以独立页面显示。
   用法:<Meta http-equiv="Widow-target" Content="_top">
   注意:这个属性是用来防止别人在框架里调用你的页面。Content选项:_blank、_top、_self、_parent。 
  7、Pics-label (网页RSAC等级评定)
   说明:在IE的Internet选项中有一项内容设置,可以防止浏览一些受限制的网站,而网站的限制级
      别就是通过该参数来设置的。
   用法:<META http-equiv="Pics-label" Contect=
               "(PICS-1.1'::URL::http://www.rsac.org/ratingsv01.html'
       I gen comment 'RSACi North America Sever' by 'inet@microsoft.com' 
       for '::URL::http://www.microsoft.com'  on '1997.06.30T14:21-0500' r(n0 s0 v0 l0))"> 
   注意:不要将级别设置的太高。RSAC的评估系统提供了一种用来评价Web站点内容的标准。用户可以设置Microsoft Internet Explorer(IE3.0以上)来排除包含有色情和暴力内容的站点。上面这个例子中的HTML取自Microsoft的主页。代码中的(n 0 s 0 v 0 l 0)表示该站点不包含不健康内容。级别的评定是由RSAC,即美国娱乐委员会的评级机构评定的,如果你想进一步了解RSAC评估系统的等级内容,或者你需要评价自己的网站,可以访问RSAC的站点:::URL::http://www.rsac.org/。  
  8、Page-Enter、Page-Exit (进入与退出) 
   说明:这个是页面被载入和调出时的一些特效。
   用法:<Meta http-equiv="Page-Enter" Content="blendTrans(Duration=0.5)">
      <Meta http-equiv="Page-Exit" Content="blendTrans(Duration=0.5)">
   注意:blendTrans是动态滤镜的一种,产生渐隐效果。另一种动态滤镜RevealTrans也可以用于页面进入与退出效果: 
      <Meta http-equiv="Page-Enter" Content="revealTrans(duration=x, transition=y)">
      <Meta http-equiv="Page-Exit" Content="revealTrans(duration=x, transition=y)"> 
       Duration  表示滤镜特效的持续时间(单位:秒)
       Transition 滤镜类型。表示使用哪种特效,取值为0-23。 
       0 矩形缩小
       1 矩形扩大
       2 圆形缩小
       3 圆形扩大
       4 下到上刷新
       5 上到下刷新
       6 左到右刷新
       7 右到左刷新
       8 竖百叶窗
       9 横百叶窗
       10 错位横百叶窗
       11 错位竖百叶窗
       12 点扩散
       13 左右到中间刷新
       14 中间到左右刷新
       15 中间到上下
       16 上下到中间
       17 右下到左上
       18 右上到左下
       19 左上到右下
       20 左下到右上
       21 横条
       22 竖条
       23 以上22种随机选择一种 
  9、MSThemeCompatible (XP主题)
   说明:是否在IE中关闭 xp 的主题
   用法:<Meta http-equiv="MSThemeCompatible" Content="Yes">
   注意:关闭 xp 的蓝色立体按钮系统显示样式,从而和win2k 很象。 
  10、IE6 (页面生成器)
   说明:页面生成器generator,是ie6
   用法:<Meta http-equiv="IE6" Content="Generator">
   注意:用什么东西做的,类似商品出厂厂商。 
  11、Content-Script-Type (脚本相关)
   说明:这是近来W3C的规范,指明页面中脚本的类型。
   用法:<Meta http-equiv="Content-Script-Type" Content="text/javascript">
   注意: 
  ★NAME变量 
  name是描述网页的,对应于Content(网页内容),以便于搜索引擎机器人查找、分类(目前几乎所有的搜索引擎都使用网上机器人自动查找meta值来给网页分类)。
  name的value值(name="")指定所提供信息的类型。有些值是已经定义好的。例如description(说明)、keyword(关键字)、refresh(刷新)等。还可以指定其他任意值,如:creationdate(创建日期) 、
document ID(文档编号)和level(等级)等。
  name的content指定实际内容。如:如果指定level(等级)为value(值),则Content可能是beginner(初级)、intermediate(中级)、advanced(高级)。 

  1、Keywords (关键字)
   说明:为搜索引擎提供的关键字列表
   用法:<Meta name="Keywords" Content="关键词1,关键词2,关键词3,关键词4,……">
   注意:各关键词间用英文逗号“,”隔开。META的通常用处是指定搜索引擎用来提高搜索质量的关键词。当数个META元素提供文档语言从属信息时,搜索引擎会使用lang特性来过滤并通过用户的语言优先参照来显示搜索结果。例如:
      <Meta name="Kyewords" Lang="EN" Content="vacation,greece,sunshine">
      <Meta name="Kyewords" Lang="FR" Content="vacances,grè:ce,soleil"> 
  2、Description (简介)
   说明:Description用来告诉搜索引擎你的网站主要内容。
   用法:<Meta name="Description" Content="你网页的简述">
   注意: 
  3、Robots (机器人向导)
   说明:Robots用来告诉搜索机器人哪些页面需要索引,哪些页面不需要索引。Content的参数有all、none、index、noindex、follow、nofollow。默认是all。
   用法:<Meta name="Robots" Content="All|None|Index|Noindex|Follow|Nofollow">
   注意:许多搜索引擎都通过放出robot/spider搜索来登录网站,这些robot/spider就要用到meta元素的一些特性来决定怎样登录。 
    all:文件将被检索,且页面上的链接可以被查询;
    none:文件将不被检索,且页面上的链接不可以被查询;(和 "noindex, no follow" 起相同作用)
    index:文件将被检索;(让robot/spider登录)
    follow:页面上的链接可以被查询;
    noindex:文件将不被检索,但页面上的链接可以被查询;(不让robot/spider登录)
   nofollow:文件将不被检索,页面上的链接可以被查询。(不让robot/spider顺着此页的连接往下探找) 
  4、Author (作者)
   说明:标注网页的作者或制作组
   用法:<Meta name="Author" Content="张三,abc@sina.com">
   注意:Content可以是:你或你的制作组的名字,或Email 
  5、Copyright (版权)
   说明:标注版权
   用法:<Meta name="Copyright" Content="本页版权归Zerospace所有。All Rights Reserved">
   注意: 
  6、Generator (编辑器)
   说明:编辑器的说明
   用法:<Meta name="Generator" Content="PCDATA|FrontPage|">
   注意:Content="你所用编辑器" 
  7、revisit-after (重访)
   说明:
   用法:<META name="revisit-after" CONTENT="7 days" >
   注意: 
  ★Head中的其它一些用法 

  1、scheme (方案)
   说明:scheme can be used when name is used to specify how the value of content should
      be interpreted.
   用法:<meta scheme="ISBN" name="identifier" content="0-14-043205-1" />
   注意: 
  2、Link (链接)
   说明:链接到文件
   用法:<Link href="soim.ico" rel="Shortcut Icon">
   注意:很多网站如果你把她保存在收件夹中后,会发现它连带着一个小图标,如果再次点击进入之后还会发现地址栏中也有个小图标。现在只要在你的页头加上这段话,就能轻松实现这一功能。<LINK> 用来将目前文件与其它 URL 作连结,但不会有连结按钮,用於 <HEAD> 标记间, 格式如下: 
       <link href="URL" rel="relationship"> 
       <link href="URL" rev="relationship"> 
  3、Base (基链接)
   说明:插入网页基链接属性
   用法:<Base href="::URL::http://www.xia8.net/"  target="_blank">
   注意:你网页上的所有相对路径在链接时都将在前面加上“::URL::http://www.cn8cn.com/”。其中target="_blank"是链接文件在新的窗口中打开,你可以做其他设置。将“_blank”改为“_parent”是链接文件将在当前窗口的父级窗口中打开;改为“_self”链接文件在当前窗口(帧)中打开;改为“_top”链接文件全屏显示。  

  以上是META标签的一些基本用法,其中最重要的就是:Keywords和Description的设定。为什么呢?道理很简单,这两个语句可以让搜索引擎能准确的发现你,吸引更多的人访问你的站点!根据现在流行搜索引擎(Google,Lycos,AltaVista等)的工作原理,搜索引擎先派机器人自动在WWW上搜索,当发现新的网站时,便于检索页面中的Keywords和Description,并将其加入到自己的数据库,然后再根据关键词的密度将网站排序。 
  由此看来,我们必须记住添加Keywords和Description的META标签,并尽可能写好关键字和简介。否则,
后果就会是:
  
  ● 如果你的页面中根本没有Keywords和Description的META标签,那么机器人是无法将你的站点加入数
    据库,网友也就不可能搜索到你的站点。 
  ● 如果你的关键字选的不好,关键字的密度不高,被排列在几十甚至几百万个站点的后面被点击的可
    能性也是非常小的。 
  写好Keywords(关键字)要注意以下几点: 

  ● 不要用常见词汇。例如www、homepage、net、web等。 
  ● 不要用形容词,副词。例如最好的,最大的等。 
  ● 不要用笼统的词汇,要尽量精确。例如“爱立信手机”,改用“T28SC”会更好。 

  “三人之行,必有我师”,寻找合适关键词的技巧是:到Google、Lycos、Alta等著名搜索引擎,搜索与
你的网站内容相仿的网站,查看排名前十位的网站的META关键字,将它们用在你的网站上,效果可想而知了。 
  ★小窍门 
  为了提高搜索点击率,这里还有一些“捷径”可以帮得到你: 
  ● 为了增加关键词的密度,将关键字隐藏在页面里(将文字颜色定义成与背景颜色一样)。 
  ● 在图像的ALT注释语句中加入关键字。如:<IMG SRC="xxx.gif" Alt="Keywords"> 
  ● 利用HTML的注释语句,在页面代码里加入大量关键字。用法: <!-- 这里插入关键字 --> 


  <title>文件头,显示在浏览器标题区</title>
  <meta http-equiv="Content-Language" content="zh-cn">
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
  <meta name="ProgId" content="FrontPage.Editor.Document">
  <meta name="制作人" content="唐蓉生">
  <meta name="主题词" content="HTML 网页制作 课件">
posted on 2006-02-23 15:34  Adrian wang  阅读(633)  评论(0编辑  收藏  举报