zoukankan      html  css  js  c++  java
  • 一些实用的笔记

    网页设计特效实用代码
    2007-10-18 17:16

    在线制作icon图标
    http://www.chami.com/html-kit/services/favicon/

    进入主页以后自动播放声音 
    <embed src="http://你的网站/music.rm" hidden=true autostart=true loop=true> 

    进入主页后自动最大话,省的去在自己单击了 
    <script> 
    self.moveTo(0,0) 
    self.resizeTo(screen.availWidth,screen.availHeight) 
    </script> 

    显示现在时间的脚本 
    <script language=vbscript>document.write now</script> 

    显示最后修改时间的脚本 
    <script>document.write(document.lastModified)</script> 

    设为首页,加为收藏,加入频道,启动outlook发信 
    <a style="cursor:hand" 
    onclick="this.style.behavior="url(#default#homepage)"; 
    this.setHomePage("yourURL">设为首页</a> 

    <a style="cursor:hand" 
    onclick="window.external.AddFavorite(location.href,document.title);">加入收藏</a> 

    <a href=javascript:window.external.addChannel("typhoon.cdf")>加入频道</a> 

    <a href="youEmail">与我联系</a>

    Flash中在按钮上如何加“设为首页”“加入收藏”?action怎么写啊?

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. on (release) {  
    2. getURL("javascript:void(document.links[0].style.behavior='url(#default#homepage)');void document.links[0].setHomePage('84design.com/" target="_blank">http://www.84design.com/');", "_self");  
    3. }  




    加入收藏:

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. on(release) {  
    2. getURL("javascript:window.external.AddFavorite('84design.com/" target="_blank">http://www.84design.com/','E佳工作室')");  
    3. }  



    状态栏动态显示现在时间 

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <script>  
    2. function see(){  
    3. window.setTimeout("see()",1000);  
    4. today = new Date();  
    5. self.status = today.toString();  
    6. }  
    7. </script>  
    8. <body onload=see()>   




    关闭窗口的脚本 

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <a href=javascript:close()>[关闭窗口]</a>   




    窗口定时关闭 
    先将如下代码网页文件的<head></head>区:
     

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <script language="JavaScript">  
    2.  function closeit() { setTimeout("self.close()",10000) //毫秒 }  
    3.  </script>  



    然后再在<body></body>标内加入如:<body onload="closeit()"> 

    网页自动关闭
     

    [html] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <html>  
    2.  <head>  
    3.  <object id=closes type="application/x-oleobject"  
    4.  classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">  
    5.  <param name="Command" value="Close">  
    6.  </object>  
    7.  </head>  
    8.  <body onload="window.setTimeout('closes.Click()',10000)">  
    9.  这个窗口会在10秒过后自动关闭,而且不会出现提示.  
    10.  </body>  
    11.  </html>  




    按下F12键,直接返回首页 

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <script>function look(){  
    2. if(event.keyCode==123){document.location.href=http://www.wowo-design.com/}  
    3. }  
    4. if(document.onkeydown==null)  
    5. {document.onkeydown=look}  
    6. </script>  




    后退,刷新,前进

    [html] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <input type=button value=后退 onclick=history.go(-1)>  
    2. <input type=button value=刷新 onclick=history.go(-0)>  
    3. <input type=button value=前进 onclick=history.go(+1)>   




    设定时间弹出窗口,4000=4秒,当然你可以自定义

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <script>function l() {  
    2. window.open("yourURL","name","width=500,height=150,border=0")  
    3. }  
    4. setTimeout("l()",4000)  
    5. </script>  




    随机替换图片                                                                                                                             <script>

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1.  document.write('<img src="img/'+parseInt(Math.random()*(5))  
    2.  +'.gif"height="40" width="50">')  
    3. </script>  




    图片文件名为0.gif 1.gif 2.gif 3.gif 4.gif 

    防止表格被撑破的代码
    <table width=100 border=1>
    <tr><td style="word-break:break-all">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</td></tr>

    Dreamweaver里画细线标格
    <table style="border-collapse: collapse">

    有没有可能用层来遮住FLASH?
    1.在flash的parameters里加入 <param name="wmode" value="transparent">
    2.<body onblur=self.focus()>

    如何让Flash按钮同时打开两个网页
    最简单的办法,最一个按扭,把

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. on(press){  
    2. getURL("http://www.*****.com";,_blank);  
    3. getURL("http://www.*****.com";,_blank);  
    4. }  



    加在按扭上

    怎样点不同的链接在同一个Iframe里显示?

    [html] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <table width="510" border="0" cellspacing="0" cellpadding="0">  
    2. <tr>  
    3. <td width="218" align="center" bgcolor="#eeeeee"><href="http://www.******.com"; target="manager">blueidea</a>  
    4. </td>  
    5. <td width="292" align="center" bgcolor="#eeeeee"><href="http://www.******.com/bbs"; target="manager">bbs</a></td>  
    6. </tr>  
    7. <tr>  
    8. <td height="200" colspan="2"><iframe border=frameborder=framespacing=height=200 marginheight=marginwidth=name=manager scrolling="NO" noresize src="http://www.******.com"; width=500 vspale="0"></iframe></td>  
    9. </tr>  
    10. </table>  


    节日倒计时

    [html] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <Script Language="JavaScript">  
    2.    var timedate= new Date("October 1,2002");  
    3.    var times="国庆节";  
    4.    var now = new Date();  
    5.    var date = timedate.getTime() - now.getTime();  
    6.    var time = Math.floor(date / (1000 * 60 * 60 * 24));  
    7.    if (time >= 0)  
    8.    document.write("现在离"+times+"还有: "+time +"天")  
    9. </Script>  

    随机变换背景图象(一个可以刷新心情的特效) 
    在<head></head>之间加上如下代码: 

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <Script Language="JavaScript">  
    2.    image = new Array(4); //定义image为图片数量的数组  
    3.    image [0] = 'tu0.gif' //背景图象的路径  
    4.    image [1] = 'tu1.gif'  
    5.    image [2] = 'tu2.gif'  
    6.    image [3] = 'tu3.gif'  
    7.    image [4] = 'tu4.gif'  
    8.    number = Math.floor(Math.random() * image.length);  
    9.    document.write("<BODY BACKGROUND="+image[number]+">");  
    10. </Script>  



    select挡住div的解决方法 
    在div里加入下面的代码,根据需要调整就可以了。

    [html] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <iframe src="javascript:false" scrolling="no" frameborder="0" style="z-index:-1;position:absolute; top:5px; left:2px;168;height:100px;">  
    2. </iframe>  


    服务器上如何定义连接
    MM_www_STRING ="driver={Microsoft access Driver (*.mdb)};dbq=" & server.mappath("../data/www.mdb")

    链接到
    response.redirect"login.asp"
    location.href="xx.asp"

    取得IP

    [html] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")  
    2. If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR")  
    3.   
    4. sql="update feedbak set hit=hit+1 where id="&request("id")  
    5. conn.execute(sql)  


    截取字符是否加...
    function formatStr(str,len)
    if(len(str)>len)
    str = left(str,len) + "..."
    end if
    formatStr = str
    end function

    接收表单
    If Ucase(Request.ServerVariables("REQUEST_METHOD")) = "POST" then
    end if

    图片宽度

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <script language="javascript">  
    2. <!--  
    3. var flag=false;  
    4. function DrawImage(ckp){  
    5. var image=new Image();  
    6. image.src=ckp.src;  
    7. if(image.width>0 && image.height>0)  
    8. {flag=true;  
    9. if(image.width>120){  
    10. ckp.width=120;  
    11. }else{  
    12. ckp.width=image.width;  
    13. }  
    14. ckp.alt=image.width+"×"+image.height;  
    15. }  
    16. }  
    17. //-->  
    18. </script>  
    19. I'll be Back 22:18:06  
    20. <img src="<%=formPath%>/<%=rs("photoname")%>" border="0" >  




    跳转
    <meta http-equiv=refresh content='0; url=/distributor/distributor.aspx'>

    溢出栏的设制
    visible:超出的部分照样显示;
    hidden:超出的部分隐藏;
    scrool:不管有否超出,都显示滚动条;
    auto:有超出时才出现滚动条;

    onMouseOver:鼠标移到目标上;
    onMouseUp:按下鼠标再放开左键时;
    onMouseOut:鼠标移开时;
    onMouseDown:按下鼠标时(不需要放开左键);
    onClink:点击时;
    onDblClick:双击时;
    onLoad:载入网页时;
    onUnload:离开页面时;
    onResize:当浏览者改变浏览窗口的大小时;
    onScroll:当浏览者拖动滚动条的时。

    CSS样式
    a:link:表示已经链接;
    a:hover:表示鼠标移上链接时;
    a:active:表示链接激活时;
    a:visited:表示己点击过的链接。

    跳出对话框链接
    javascript:alert('lajflsjpjwg')

    后退:javascript:history.back(1)

    关闭窗口:javascript:window.close();

    窗口还原
    function restore(){
    window.moveTo(8,8);
    window.resizeTo(screen.width-24,screen.availHeight-24);
    }

    head区是指首页HTML代码的<head>和</head>之间的内容。
    必须加入的标签

    1.公司版权注释

    <!--- The site is designed by Maketown,Inc 06/2000 --->

    2.网页显示字符集

    简体中文:<META HTTP-EQUIV="Content-Type" C>
    繁体中文:<META HTTP-EQUIV="Content-Type" C>
    英 语:<META HTTP-EQUIV="Content-Type" C>

    3.网页制作者信息

    <META name="author" c>

    4.网站简介

    <META NAME="DESCRIPTION" C>

    5.搜索关键字

    <META NAME="keywords" C>

    6.网页的css规范

    <LINK href="style/style.css" rel="stylesheet" type="text/css">
    (参见目录及命名规范)

    7.网页标题

    <title>xxxxxxxxxxxxxxxxxx</title>

    可以选择加入的标签
    1.设定网页的到期时间。一旦网页过期,必须到服务器上重新调阅。
    <META HTTP-EQUIV="expires" C>

    2.禁止浏览器从本地机的缓存中调阅页面内容。
    <META HTTP-EQUIV="Pragma" C>

    3.用来防止别人在框架里调用你的页面。
    <META HTTP-EQUIV="Window-target" C>

    4.自动跳转。
    <META HTTP-EQUIV="Refresh" C>
    5指时间停留5秒。

    5.网页搜索机器人向导.用来告诉搜索机器人哪些页面需要索引,哪些页面不需要索引。
    <META NAME="robots" C>
    CONTENT的参数有all,none,index,noindex,follow,nofollow。默认是all。

    6.收藏夹图标
    <link rel = "Shortcut Icon" href="favicon.ico">

    所有的javascript的调用尽量采取外部调用.
    <SCRIPT LANGUAGE="javascript" SRC="script/xxxxx.js"></SCRIPT>

    附<body>标签:

    <body>标签不属于head区,这里强调一下,为了保证浏览器的兼容性,必须设置页面背景<body bgcolor="#FFFFFF"> 

    flash透明

    在flash的源代码中加上:<param name="wmode" value="transparent"> 表格透明
    style="FILTER: alpha(opacity=72)"

    网址前添加icon的方法 
    1、上http://www.******.com上用他的icon editor online制作一个图标。他会将做好的图标通过email即时发送给你。

    2、把这个命名为favicon.ico的图标放置在index.html同一个文件夹中。就可以了。

    作一个图标文件,大小为16*16像素。文件扩展名为ico,然后上传到相应目录中。在HTML源文件“<head></head>”之间添加如下代码:

    <Link Rel="SHORTCUT ICON" href="http://图片的地址(注意与刚才的目录对应)">

    其中的“SHORTCUT ICON”即为该图标的名称。当然如果用户使用IE5或以上版本浏览时,就更简单了,只需将图片上传到网站根目录下,自动识别

    可以在收藏夹中显示出你的图标
    <link rel="Bookmark" href="favicon.ico"> 

    状态栏连接说明
    <A HREF="链接到某处" >某某链接</a>
    链接说明
    <a href=“”Title=链接说明>

    禁止鼠标右键
    在<body>标签中加入 <body >

    禁止复制,鼠标拖动选取
    <body ondragstart=window.event.returnValue=false oncontextmenu=window.event.returnValue=false onselectstart=event.returnValue=false>

    水平线
    <hr width="长度" size="高度" color="颜色代码" noshade> noshade为有无阴影

    表单电子邮件提交
    < form name="content" method="post" action="mailto:电子邮箱" >< /form>
    文本域名为Subject 为邮件的标题
    邮件链接定制
    Mailto:地址 ? Subject=邮件的标题 &bc=抄送 &bcc=密件抄送

    背景音乐
    <bgsound src=地址 loop="-1">

    消除ie6自动出现的图像工具栏,设置 GALLERYIMG属性为false或no . 
    <IMG SRC="mypicture.jpg" HEIGHT="100px" WIDTH="100px" GALLERYIMG="no"> 

    防止点击空链接时,页面往往重置到页首端 
    代码“javascript:void(null)”代替原来的“#”标记 

    如何避免别人把你的网页放在框架中
    <script language=“javascript”><!--if (self!=top){top.location=self.location;} -->< /script> 

    页面定时刷新
    <meta http-equiv="Refresh" c > 

    页面定时转向新的地址
    <meta http-equiv="refresh" c> 

    显示日期 

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <script language="javascript"><!--  
    2. today=new Date();  
    3. var week; var date;  
    4. if(today.getDay()==0) week="星期日"  
    5. if(today.getDay()==1) week="星期一"  
    6. if(today.getDay()==2) week="星期二"  
    7. if(today.getDay()==3) week="星期三"  
    8. if(today.getDay()==4) week="星期四"  
    9. if(today.getDay()==5) week="星期五"  
    10. if(today.getDay()==6) week="星期六"  
    11. date=(today.getYear())+"年"+(today.getMonth()+1)+"月"+today.getDate()+"日"+" "  
    12. document.write("<span style='font-size: 9pt;'>"+date+week+"</span>");  
    13. // -->  
    14. </script>   


    文字滚动
    插入边框为0的1行1列的表格,在表格中输入文字,选中文字,
    按ctrl+t输入marquee direction="up", 回车即可让文字在表格区域内向上滚动。
    (right、down可用于让文字或图象向右及向下滚动,修改html原代码还可以得到需要的滚动速度。 

    表单验正

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <SCRIPT language=javascript>  
    2. function checkform(theform){  
    3. if(theform.name.value==""){  
    4. alert("姓名不能为空!");  
    5. theform.name.focus();  
    6. return false;  
    7. }  
    8. if(theform.tel.value==""){  
    9. alert("电话不能为空!");  
    10. theform.tel.focus();  
    11. return false;  
    12. }  
    13. }  
    14. </SCRIPT>  


    定义鼠标
    body{cursor: url(cur.ani或cur);}

    以图片方式插视频
    <IMG height=240 loop=infinite dynsrc=http://amedia.efu.com.cn/EFUADD0001.rmvb width=320>

    层在flash上面
    < param name="wmode" value="opaque" >

    延迟跳转
    <meta http-equiv=refresh content='3; url=javascript:window.close();'>

    空链接
    javascript:;

    标题表格
    <fieldset>
    <legend>表格的说明</legend>
    </fieldset>

    细线表格
    style="BORDER-COLLAPSE: collapse;"

    滚动条颜色代码

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. BODY{  
    2. SCROLLBAR-FACE-COLOR: #FFFFFF;  
    3. SCROLLBAR-HIGHLIGHT-COLOR: #FFFFFF;  
    4. SCROLLBAR-SHADOW-COLOR: #FFFFFF;  
    5. SCROLLBAR-3DLIGHT-COLOR: #FFCBC8;  
    6. SCROLLBAR-ARROW-COLOR: #FFFFFF;  
    7. SCROLLBAR-TRACK-COLOR: #FFFFFF;  
    8. SCROLLBAR-DARKSHADOW-COLOR: #FFCBC8;  
    9. SCROLLBAR-BASE-COLOR: #FFFFFF  
    10. }  



    连续的英文或者一堆感叹号!!!不会自动换行的问题
    只要在CSS中定义了如下句子,可保网页不会再被撑开了

    table{table-layout: fixed;}
    td{word-break: break-all; word-wrap:break-word;}

    注释一下:

    1.第一条table{table-layout: fixed;},此样式可以让表格中有!!!(感叹号)之类的字符时自动换行。

    2.td{word-break: break-all},一般用这句这OK了,但在有些特殊情况下还是会撑开,因此需要再加上后面一句{word-wrap:break-word;}就可以解决。此样式可以让表格中的一些连续的英文单词自动换行。

    控制横向和纵向滚动条的显隐?
    <body style="overflow-y:hidden"> 去掉x轴
    <body style="overflow-x:hidden"> 去掉y轴
    <body scroll="no">不显

    表格变色
    <TD onmouseover="this.style.backgroundColor='#FFFFFF'" 
    onmouseout="this.style.backgroundColor=''"
    style="CURSOR: hand"> 

    普通iframe页面
    <iframe name="name" src="main.htm" width="450" height="287" scrolling="Auto" frameborder="0"></iframe>

    iframe自适应高度
    <iframe name="pindex" src="index.asp" frameborder=false scrolling="auto" width="100%" height="100%" frameborder=no onload="document.all['pindex'].style.height=pindex.document.body.scrollHeight" ></iframe>

    iframe(嵌入式帧)自适应高度
    填写的嵌入地址一定要和本页面在同一个站点上,否则会提示“拒绝访问!”。对跨域引用有权限问题,请查阅其他资料。
    <iframe name="guestbook" src="gbook/index.asp" scrolling=no width="100%" height="100%" frameborder=no onload="document.all['guestbook'].style.height=guestbook.document.body.scrollHeight"></iframe> 

    字号缩放
    越来越多的人长时间的泡网,眼镜的普及率也越来越高,让文字大点,让更多的用户看的更清楚。

    [javascript] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <script type="text/javascript">  
    2. function doZoom(size)  
    3. {document.getElementById('zoom').style.fontSize=size+'px';}  
    4. </script>  
    5. <span id="zoom">需要指定大小的文字</span>  
    6. <a href="javascript:doZoom(16)">大</a> <a href="javascript:doZoom(14)">中</a> <a href="javascript:doZoom(12)">小</a>   


    select挡住div的解决方法 
    在div里加入下面的代码,根据需要调整就可以了。
    <iframe src="javascript:false" scrolling="no" frameborder="0" style="z-index:-1;position:absolute; top:5px; left:2px;168;height:100px;">
    </iframe>

    跳转菜单新窗口
    <select name="select" onchange="window.open(this.options[this.selectedIndex].value)">
    <option value="http://www.microsoft.com/ie"> Internet Explorer</option>
    <option value="http://www.microsoft.com"> Microsoft Home</option>
    <option value="http://msdn.microsoft.com"> Developer Network</option>
    </select>

    flash透明选项
    <param name="wmode" value="transparent"> 

    记录并显示网页的最后修改时间 
    <script language=JavaScript> 
    document.write("最后更新时间: " + document.lastModified + "") 
    </script>

    让IFRAME框架内的文档的背景透明
    <iframe src="about:<body style='background:transparent'>" allowtransparency></iframe> 

    打开窗口即最大化
    <script language="JavaScript"> 
    <!-- Begin 
    self.moveTo(0,0) 
    self.resizeTo(screen.availWidth,screen.availHeight) 
    // End --> 
    </script>

    文字或图片弹出指定大小的窗口
    在body中加入
    <script language="JavaScript" type="text/JavaScript">
    function MM_openBrWindow(theURL,winName,features) {window.open(theURL,winName,features);}
    </script>
    弹出代码
    <a href="#" target="_self" onClick="MM_openBrWindow('windows01.htm','','width=550,height=380')" width="550" height="380" border="0">图片或文字</a>

    flash按钮加链接 
    on (press) {
    getURL("http://www.******.com","_blank");


    细线分隔线
    <hr noshade size=0 color=#C0C0C0> 

    消除ie6自动出现的图像工具栏,设置 GALLERYIMG属性为false或no . 
    <IMG SRC="mypicture.jpg" HEIGHT="100px" WIDTH="100px" GALLERYIMG="no"> 

    禁止页面正文内容被选取 
    <body oncontextmenu="return false" ondragstart="return false" onselectstart ="return false" onselect="document.selection.empty()" oncopy="document.selection.empty()" onbeforecopy="return 
    false"onmouseup="document.selection.empty()"> 

    不能点右键,不用CTRL+A,不能复制作!
    <body oncontextmenu="window.event.returnValue=false" 
    onkeypress="window.event.returnValue=false" 
    onkeydown="window.event.returnValue=false" 
    onkeyup="window.event.returnValue=false" 
    ondragstart="window.event.returnValue=false" 
    onselectstart="event.returnValue=false"> 
    </body>

    随机变换背景图象(一个可以刷新心情的特效 
    <Script Language="JavaScript"> 
       image = new Array(4); //定义image为图片数量的数组 
       image [0] = 'tu0.gif' //背景图象的路径 
       image [1] = 'tu1.gif' 
       image [2] = 'tu2.gif' 
       image [3] = 'tu3.gif' 
       image [4] = 'tu4.gif' 
       number = Math.floor(Math.random() * image.length); 
       document.write("<BODY BACKGROUND="+image[number]+">"); 
    </Script> 

    flash载入影片 
    on (release)
    {
    loadMovie("1-01.swf", "_root.loaderclip");


    图片表单按钮
    <form id="form1" name="form1" method="post" action="">
    <img src="login.gif" width="62" height="22" onclick="document.form1.submit()" />
    </form> 

    左右阴影背景的CSS定义方法
    body {
    text-align:center;
    background-repeat: repeat-y;
    background-position: center;
    background-image: url(../images/bg.jpg);


    如何关闭层
    <div id="Layer1"></div>
    <a href="#" onClick="Layer1.style.display='none'">关闭层</a>

    运行代码框
    <script>
    function Preview()
    {var TestWin=open('');
    TestWin.document.write(code.value);}
    </script>
    <textarea id=code cols=60 rows=15></textarea>
    <br>
    <button onclick=Preview() >运行</button>

    给表格做链接 
    <table width="100%" onclick="window.open('http://www.******.com/&#39;, '_blank')" style="CURSOR:hand">
    <tr>
    <td height="100" bgcolor="f4f4f4">&nbsp;</td>
    </tr>
    </table>

    CSS文字阴影 
    .shadowfont{FILTER: dropshadow(color=#666666, offx=1, offy=1, positive=1); FONT-FAMILY: "宋体"; FONT-SIZE: 9pt;COLOR: #ffffff;} 

    表格透明 
    style="FILTER: alpha(opacity=72)" 

    Alt和Title的区别 
    alt 用来给图片来提示的。Title用来给链接文字或普通文字提示的。

    <a href="#" Title="给链接文字提示">文字</a>
    <p Title="给链接文字提示">文字</p>

    <img src="图片链接" alt="给图片提示">

    在同一页面设置不同文字链接效果的样式
    <style type="text/css">
    .green {COLOR: #309633}
    .green A:link {COLOR: #309633; TEXT-DECORATION: none}
    .green A:visited {COLOR: #309633; TEXT-DECORATION: none}
    .green A:hover {COLOR: #309633; TEXT-DECORATION: underline}
    .green A:active {COLOR: #309633; TEXT-DECORATION: none}
    </style>
    <a href="#" class="green">文字</a>

    在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错) 
    首 选请确认SQL SERVER EXPRSS已安装到本地计算机上,并且SQL SERVER (SQLEXPRESS)服务已经成功启动。如果问题仍然存在,可以尝试应打开“SQL Server 外围应用配置器”,选择“服务和连接的外围应用配置器”,然后将“远程连接”配置为“同时使用 TCP/IP 和 named pipes”

    由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。 
    将连接字符串中的“User Instance=True”修改为“User Instance=False”即可。

    无法将文件 'X:WebsiteApp_DataDatabase.mdf' 作为数据库 ''. 附加。当前命令发生了严重错误。应放弃任何可能产生的结果。 
    需要为X分区以及X分区的子文件夹和文件分配Users组的“读取”权限。

    尝试为文件 X:WebsiteApp_DataDatabase.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。 
    首 选要确认已经为X分区以及X分区的子文件夹和文件分配了Users组的“读取”权限。如果问题仍然存在,请使用SQL Server Management Studio连接到SQLEXPRESS数据库实例,检查是否有名称是“Database”的数据库存在。如果有,分离同名数据库即可。如果还有问题检查web.config中Data Source=.SQLEXPRESS,如果同时装了sql2000名称应为MSSQL$SQLEXPRESS。

    无法打开用户默认数据库。登录失败。
    用户 'NT AUTHORITYNETWORK SERVICE' 登录失败。
     
    数据库文件Database.mdf 的读写权限被设置成只有NETWORK SERVICE才具有。解决方法是先停止掉SQL SERVER (SQLEXPRESS)服务,然后从父项集成权限,再次启动SQL SERVER (SQLEXPRESS)服务即可。
    User:用户表,存放用户信息
    Role:角色表,存放角色信息
    UserInRole:用户角色映射表,存放用户和角色的对就关系,多对多,一个用户可以对应多个
    角色,而不同的角色有一同的权限。
    Permissions:权限表,不同的角色对应不同的权限。权限信息使用一个字段flag来表示,
    好处是可以使用位运算来计算权限,缺点是用位标识的权限受理论值限制,如int理论上可以
    标识31种不同的权限, 当然可以整加一个字段来弥补,ApplicationID标识不同的模块
    Application:模块信息。

      [Flags]
         public enum Flag:long
         { 
          View=1,
          Edit=2,
          Delete=4
         }

    特性[Flag]告诉编译器,当编译器看到Flag枚举时,它会充许你用|(or)操作符组合枚举值,
    就像二的整数幂一样,
    例如 Flag  Administer=Flag.View|Flag.Edit|Flag.Delete;表示三种权限的组合。

    基础知识:

    位运算

    枚举Flag

    当编译器看到Flag枚举时,它会充许你用|(or)操作符组合枚举值,
    就像二的整数幂一样,
    例如 Flag Administer=Flag.View|Flag.Edit|Flag.Delete;

    常用操作,检查是否存在
    Flag administer=Flag.View|Flag.Edit|Flag.Delete;
      public bool Check(Flag administer,Flag mask)
            {
                bool bReturn = false;
                if ((administer & mask) == mask)
                    bReturn = true;

                return bReturn;
            }
    调用  Check(administer,Flag.Edit)将返回true.

     public Flag SetBit(Flag administer,Flag mask)
            {
              return  administer |= mask;
               
            }

     administer |= mask;操作相当于 administer = administer |mask;

     从枚举中减去一种状态
      administer &=mask;

      如 :
    Flag administer=Flag.View|Flag.Edit|Flag.Delete;
    如需要禁止删除权限.
     administer &=Flag.Delete;

     另外,标记为flag的枚举类型,可以不设置值
       public enum Flag:long
         { 
          View,
          Edit,
          Delete
         }
       如需要设置,按以下规律, View=1,Edit=2,Delete=4,Reply=8按2次方累加,为什么会这样?因为他使用二进制操作,
       当你使用 View=1,Edit=2,Delete=3,Reply=4这样的值, Flag.Delete 包含的值是Flag.Delete还是View=1|Edit=2就无从检测了.

    每个用户,可以属于不同的角色不同的角色分配不同的权限,计算所有解权的所有可能的权限组合,只要有充许的权限,那么该用户既获取该权限。

    在CS系统中,Permissions表合用了二个字段来标识权限.
     AllowMask,DenyMask 规责是Deny优先,也就是说当权限标记为Deny那么不论是否Allow一律禁止该用户进行此项操作。

    另外,像论坛类的权限设计,仅仅一个ApplicationID字段是不够用的,因为每个版块都需要设置不同的权限,来控制权限的粒度,可在增加一张Permission表,ApplicationID修改为版块ID
    这样,就可以针对不同的版块设置不同的权限

    好了,接下的问题是怎么和.net自带的权限系统挂钩了。。

    在asp.net系统中 ,HttpContext.Current.User实现了一个接口IPrincipal,IPrincipal包含了另一个接口Identity

      我们在设计User类的时候继承此接口
      public class User:IPrincipal
      {
        string username;
        public string Username
        {
         get{return username;}
         set{username=value;} 
        }
      }

      实现IPrincipal接口方法
       public IIdentity Identity
            {
                get {
                    if (!string.IsNullOrEmpty(username))
                        _Identity = new GenericIdentity(username,"Forums");
                    return (IIdentity)_Identity;
                }
            }

    public bool IsInRole(string role)
    {
    .....
    }

    怎样和asp.net挂钩呢,这里可以在登陆时做检查

     if(HttpContext.Current!=null){
                    User u= Users.GetUser(name);
                    HttpContext.Current.User =u;

    在使用时 
     User u = HttpContext.Current.User as User;
    当然检查用户角色可以直接用



     if(HttpContext.Current.User.Identity.IsAuthenticated&&HttpContext.Current.User.IsInRole(角色名))


    另外可以直接把到当用户权限策略挂接到当前线程 ,使用以下方法
        AppDomain.CurrentDomain.SetPrincipalPolicy(User);

    好了,接下来,怎么check权限?

    我倾向于使用Attribute

    [csharp] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Delegate, Inherited = true, AllowMultiple = true)]  
    2.     public class CheckPermissionAttribute : Attribute  
    3.     {  
    4.   
    5.         int appID;  
    6.         public int ApplicationID  
    7.         {  
    8.             get { return appID; }  
    9.             set { appID = value; }  
    10.         }  
    11.         Permission _allMask;  
    12.         public Permission AllMask  
    13.         {  
    14.             get { return _allMask; }  
    15.             set { _allMask = value; }  
    16.         }  
    17.   
    18.         public CheckPermissionAttribute(ApplicationID app, Permission allMask)  
    19.         {  
    20.             appID = app;  
    21.             _allMask = allMask;  
    22.         }  
    23.         public CheckPermissionAttribute(Permission allMask)  
    24.         {  
    25.             _allMask = allMask;  
    26.         }  
    27.   
    28.     }  



    AttributeUsage 第一个参数表示该属性可以应用于类,方法,属性,代理上
    Inherited 检查继承的权限。
    AllowMultiple 充许多次应用。

    按下来,设计一个基类,继承自Page:

    [csharp] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. public   class PageBase : Page  
    2. {  
    3. Flag _allMask;  
    4.   
    5. /// <summary>  
    6.     /// 检查类型权限  
    7.     /// </summary>  
    8.     public void CheckClass()  
    9.     {  
    10.         Type type = this.GetType();  
    11.         CheckPermissionAttribute att = (CheckPermissionAttribute)CheckPermissionAttribute.GetCustomAttribute(type, typeof(CheckPermissionAttribute));  
    12.         if (att != null)  
    13.         {  
    14.             Check(att.AllMask);  
    15.         }  
    16.     }  
    17.   
    18.   /// <summary>  
    19.     /// 检查函数调用权限  
    20.     /// </summary>  
    21.     /// <param name="methodName">方法名</param>  
    22.     public void CheckMethod(string methodName)  
    23.     {  
    24.         Type type = this.GetType();  
    25.         string name = "*";  
    26.         if (!string.IsNullOrEmpty(methodName))  
    27.             name = methodName;  
    28.         MemberInfo[] mis = type.FindMembers(MemberTypes.Method ,BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase,Type.FilterNameIgnoreCase,name);  
    29.         foreach (MethodInfo m in mis)  
    30.        {  
    31.            CheckPermissionAttribute att = (CheckPermissionAttribute)CheckPermissionAttribute.GetCustomAttribute(m, typeof(CheckPermissionAttribute));  
    32.            if (att != null)  
    33.            {   
    34.   
    35.                Check(att.AllMask);  
    36.                             
    37.            }  
    38.              
    39.        }  
    40.        return;  
    41.    
    42.      
    43.     }  
    44.     public void Check(Flag permissions)  
    45.     {  
    46.         if (!CheckPermission(permissions))  
    47.         {  
    48.             string url = string.Format("MsgPage.aspx?msg={0}", HttpUtility.UrlEncode("您没有权限访问该资源"));  
    49.             Response.Redirect(url);  
    50.         }  
    51.     }  
    52.     public void Check(ApplicationID appID, Flag permissions)  
    53.     {  
    54.         PermissionManager  pm= Spaces.PermissionManager.Instance(appType);  
    55.         if (!CheckPermission(pm,permissions))  
    56.         {  
    57.             string url = string.Format("MsgPage.aspx?msg={0}", HttpUtility.UrlEncode("您没有权限访问该资源"));  
    58.             Response.Redirect(url);  
    59.         }  
    60.   
    61.     }  
    62.   
    63.  protected override void OnInit(EventArgs e)  
    64.     {  
    65.         CheckClass();  
    66.         base.OnInit(e);  
    67.     }  
    68. }  



    如何使用:

    [csharp] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. [CheckPermission(2, Flag.View)]  
    2. public partial class MyPage : PageBase  
    3. {  
    4.   
    5. }  



    若没有查看权限,会自运导向错误页面。

    在类上应用挺方便。

    方法上应用我于一个方法比较麻烦,我还没有找到在页面class里怎么获取当前调用的类名.

    可以调用 CheckMethod(方法名称);如

    [csharp] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. <span style="font-family:Arial;">[CheckPermission(2, Flag.Delete)]  
    2. public partial class MyPage : PageBase  
    3. {  
    4.   public void test()  
    5.   {  
    6.    CheckMethod("test");  
    7.    .......  
    8.   }  
    9. }</span>  



  • 相关阅读:
    JDK13中将增加文本块特性
    java8新特性Lambda表达式为什么运行效率低
    Docker安装Mysql多版本
    Mysql中的降序索引底层实现
    GITHUB慢! 怎么办?
    程序员要搞明白CDN,这篇应该够了
    HTTP长连接
    Tomcat热部署与热加载
    Tomcat是一个Servlet容器?
    DPDK
  • 原文地址:https://www.cnblogs.com/moyupianpian/p/5695752.html
Copyright © 2011-2022 走看看