js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

1、   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。                            

例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</script>

2、   进行url跳转时可以整体使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、   js使用数据时可以使用escape

[Huoho.Com编辑]

例如:搜藏中history纪录。

4、   escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。


最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

posted @ 2008-07-04 17:01 zhangsir 阅读(1) | 评论 (0)编辑

     用as做滤镜效果,每种滤镜效果对应一个类,这些类都在Macromedia\Flash 8 Beta 2\zh_cn\First Run\Classes\FP8\flash\filters这个文件夹里

  一、渐变斜角——GradientBevelFilter类

  二、投影——DropShadowFilter类

  三、模糊——BlurFilter类(这个最容易了,参数少)

  四、发光——GlowFilter类

  五、渐变发光——GradientGlowFilter类

  六、斜角——BevelFilter类

  我暂时就只知道这6个

  做法是用new关键字新建一个相应类的对象,暂时就叫myfilters吧,然后把这个对象添加进一个数组filters_array,最后把这个数组赋值给mc的fliters属性,大功告成。

  我想其中关键应该就是创建对象时如何设置里面的参数吧,我想滤镜的面板大家都很熟悉的了,那么,我就把as添加滤镜的一些参数和它们的面板相对照,这样可能更容易理解。

  下面逐个举例(都是帮助里的例子啦,里面的参数名字都是可以改的,不过我觉得就用那些名字就蛮好),例子里都有函数setUpFlatRectangle(也有叫createRectangle的),是用来做一个方形mc的。

function setUpFlatRectangle(w:Number, h:Number, bgColor:Number, name:String):MovieClip {
var mc:MovieClip = this.createEmptyMovieClip(name, this.getNextHighestDepth());
mc.beginFill(bgColor);
mc.lineTo(w, 0);
mc.lineTo(w, h);
mc.lineTo(0, h);
mc.lineTo(0, 0);
return mc;
}

  直接把脚本复制到主场景的第一帧就ok了,不要忘记上面的函数哦,要注意改函数名的

  一、渐变斜角——GradientBevelFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

  脚本:

import flash.filters.GradientBevelFilter;
import flash.filters.BitmapFilter;
var art:MovieClip = setUpFlatRectangle(150, 150, 0xCCCCCC, "gradientBevelFilterExample");
//创建新的mc,实例名:art
var distance:Number = 5;
var angleInDegrees:Number = 225; // opposite 45 degrees
var colors:Array = [0xFFFFFF, 0xCCCCCC, 0x000000];
var alphas:Array = [1, 0, 1];
var ratios:Array = [0, 128, 255];
var blurX:Number = 8;
var blurY:Number = 8;
var strength:Number = 2;
var quality:Number = 3;
var type:String = "inner";
var knockout:Boolean = true;//设置各个参数
var filter:GradientBevelFilter = new GradientBevelFilter(distance, angleInDegrees, colors, alphas, ratios, blurX, blurY, strength, quality, type, knockout);//创建斜角滤镜对象filter
var filterArray:Array = new Array();
filterArray.push(filter); //把filter添加进数组filterArray,如果art上有多个滤镜效果,就直接添加进这个数组好了
art.filters = filterArray;//将art的filters属性设置为filterArray

  下面是脚本中的参数和面板中的参数对比:

  colors、alphas、ratios用来控制渐变颜色的,colors是色彩,alphas是百分比(这里面是0~1的小数),ratios是偏移量0~255(可以参考Color类)blurX、blurY是就对应面板里的模糊x、模糊y。strength是面板里的强度,是0~255的数;quality是品质,只有1、2、3分别对应低、中、高
distance是距离,默认4.0;type是类型,用字符串表示,例子中的”inner”是内侧,还有outer、fuller;knockout是个布尔值,表示是否挖空。

  二、投影——DropShadowFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.DropShadowFilter;
var art:MovieClip = createRectangle(100, 100, 0x003366, "gradientGlowFilterExample");
var distance:Number = 20;
var angleInDegrees:Number = 45;
var color:Number = 0x000000;
var alpha:Number = 0.8;
var blurX:Number = 16;
var blurY:Number = 16;
var strength:Number = 1;
var quality:Number = 3;
var inner:Boolean = false;
var knockout:Boolean = false;
var hideObject:Boolean = false;
var filter:DropShadowFilter = new DropShadowFilter(distance, angleInDegrees, color, alpha, blurX, blurY, strength, quality, inner, knockout, hideObject);
var filterArray:Array = new Array();
filterArray.push(filter);
art.filters = filterArray;

  下面是脚本中的参数和面板中的参数对比:

Distance是距离;
angleInDegrees是角度0~360
blurX、blurY是模糊x、模糊y
strength是强度,脚本里是0~5的数
quality是品质,只能是1、2、3,分别对应低、中、高
inner是内侧阴影
knockout是挖空
hideObject是隐藏对象

  三、模糊——BlurFilter类(这个最容易了,参数少嘛)

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.BlurFilter;
var rect:MovieClip = createRectangle(100, 100, 0x003366, "BlurFilterExample");
var blurX:Number = 30;
var blurY:Number = 30;
var quality:Number = 3;
var filter:BlurFilter = new BlurFilter(blurX, blurY, quality);
var filterArray:Array = new Array();
filterArray.push(filter);
rect.filters = filterArray;

  这个就不解释了,就三个参数,前面都介绍过了,下面遇到介绍过的参数就都不介绍了

  四、发光——GlowFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.GlowFilter;
var rect:MovieClip = createRectangle(100, 100, 0x003366, "gradientGlowFilterExample");
var color:Number = 0x33CCFF;
var alpha:Number = .8;
var blurX:Number = 35;
var blurY:Number = 35;
var strength:Number = 2;
var quality:Number = 3;
var inner:Boolean = false;
var knockout:Boolean = false;
var filter:GlowFilter = new GlowFilter(color, alpha, blurX, blurY, strength, quality, inner, knockout);
var filterArray:Array = new Array();
filterArray.push(filter);
rect.filters = filterArray;

  五、渐变发光——GradientGlowFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.GradientGlowFilter;
var art:MovieClip = createRectangle(100, 100, 0x003366, "gradientGlowFilterExample");
var distance:Number = 0;
var angleInDegrees:Number = 45;
var colors:Array = [0xFFFFFF, 0xFF0000, 0xFFFF00, 0x00CCFF];
var alphas:Array = [0, 1, 1, 1, 1];
var ratios:Array = [0, 63, 126, 255];
var blurX:Number = 50;
var blurY:Number = 50;
var strength:Number = 2.5;
var quality:Number = 3;
var type:String = "outer";
var knockout:Boolean = false;
var filter:GradientGlowFilter = new GradientGlowFilter(distance, angleInDegrees, colors, alphas, ratios, blurX, blurY, strength, quality, type, knockout);
var filterArray:Array = new Array();
filterArray.push(filter);
art.filters = filterArray;

  这里的参数跟发光那个很像,需要说明的就是用来设置颜色的那几个数组里的4项依次是表示从外到内的颜色的

  六、斜角——BevelFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.BevelFilter;
var distance:Number = 5;
var angleInDegrees:Number = 45;
var highlightColor:Number = 0xFFFF00;
var highlightAlpha:Number = 1;
var shadowColor:Number = 0x0000FF;
var shadowAlpha:Number = 1;
var blurX:Number = 10;
var blurY:Number = 10;
var strength:Number = 2;
var quality:Number = 3;
var type:String = "inner";
var knockout:Boolean = false;
var filter:BevelFilter = new BevelFilter(distance, angleInDegrees, highlightColor, highlightAlpha, shadowColor, shadowAlpha, blurX, blurY, strength, quality, type, knockout);
var rect:MovieClip = createRectangle(100, 100, 0x00CC00, "bevelFilterExample");
rect.filters = new Array(filter);

参数:

highlightColor、highlightAlpha设置加亮颜色
shadowColor、shadowAlpha设置阴影颜色

posted @ 2008-07-03 14:02 zhangsir 阅读(7) | 评论 (0)编辑

//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
 var version;
 var axo;
 var e;

 // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

 try {
  // version will be set for 7.X or greater players
  axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
  version = axo.GetVariable("$version");
 } catch (e) {
 }

 if (!version)
 {
  try {
   // version will be set for 6.X players only
   axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
   
   // installed player is some revision of 6.0
   // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
   // so we have to be careful.
   
   // default to the first public version
   version = "WIN 6,0,21,0";

   // throws if AllowScripAccess does not exist (introduced in 6.0r47)  
   axo.AllowScriptAccess = "always";

   // safe to call for 6.0r47 or greater
   version = axo.GetVariable("$version");

  } catch (e) {
  }
 }

 if (!version)
 {
  try {
   // version will be set for 4.X or 5.X player
   axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
   version = axo.GetVariable("$version");
  } catch (e) {
  }
 }

 if (!version)
 {
  try {
   // version will be set for 3.X player
   axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
   version = "WIN 3,0,18,0";
  } catch (e) {
  }
 }

 if (!version)
 {
  try {
   // version will be set for 2.X player
   axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
   version = "WIN 2,0,0,11";
  } catch (e) {
   version = -1;
  }
 }
 
 return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
 // NS/Opera version >= 3 check for Flash plugin in plugin array
 var flashVer = -1;
 
 if (navigator.plugins != null && navigator.plugins.length > 0) {
  if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
   var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
   var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
   var descArray = flashDescription.split(" ");
   var tempArrayMajor = descArray[2].split(".");   
   var versionMajor = tempArrayMajor[0];
   var versionMinor = tempArrayMajor[1];
   var versionRevision = descArray[3];
   if (versionRevision == "") {
    versionRevision = descArray[4];
   }
   if (versionRevision[0] == "d") {
    versionRevision = versionRevision.substring(1);
   } else if (versionRevision[0] == "r") {
    versionRevision = versionRevision.substring(1);
    if (versionRevision.indexOf("d") > 0) {
     versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
    }
   }
   var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
  }
 }
 // MSN/WebTV 2.6 supports Flash 4
 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
 // WebTV 2.5 supports Flash 3
 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
 // older WebTV supports Flash 2
 else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
 else if ( isIE && isWin && !isOpera ) {
  flashVer = ControlVersion();
 } 
 return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
 versionStr = GetSwfVer();
 if (versionStr == -1 ) {
  return false;
 } else if (versionStr != 0) {
  if(isIE && isWin && !isOpera) {
   // Given "WIN 2,0,0,11"
   tempArray         = versionStr.split(" ");  // ["WIN", "2,0,0,11"]
   tempString        = tempArray[1];   // "2,0,0,11"
   versionArray      = tempString.split(","); // ['2', '0', '0', '11']
  } else {
   versionArray      = versionStr.split(".");
  }
  var versionMajor      = versionArray[0];
  var versionMinor      = versionArray[1];
  var versionRevision   = versionArray[2];

         // is the major.revision >= requested major.revision AND the minor version >= requested minor
  if (versionMajor > parseFloat(reqMajorVer)) {
   return true;
  } else if (versionMajor == parseFloat(reqMajorVer)) {
   if (versionMinor > parseFloat(reqMinorVer))
    return true;
   else if (versionMinor == parseFloat(reqMinorVer)) {
    if (versionRevision >= parseFloat(reqRevision))
     return true;
   }
  }
  return false;
 }
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?');
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs)
{
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret =
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret =
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();   

    switch (currArg){ 
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie": 
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace":
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

 

 

/*

 

HTML页面:

<script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','1004','height','154','src','aaaa','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','aa' ); //end AC code
</script>

<noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="1004" height="154">
      <param name="movie" value="aa.swf" />
      <param name="quality" value="high" />
      <embed src="aaaa.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="1004" height="154"></embed>
    </object></noscript>

 

*/

posted @ 2008-06-26 14:37 zhangsir 阅读(8) | 评论 (0)编辑

Page 执行中将按照如下顺序激活事件:

Page.PreInit
Page.Init
Page.InitComplite
Page.PreLoad
Page.Load
Page.LoadComplete
Page.PreRender
Page.PreRenderComplete

如果页面从另一个页面继承,如BasePage:System.Web.UI.Page,在BasePage中做了一些扩展,如权限检查,而其他页面从BasePage继承,则BasePage和最终Page的事件激活顺序是:

UI.PreInit
Page.PreInit
UI.Init
Page.Init
UI.InitComplite
Page.InitComplite
UI.PreLoad
Page.PreLoad
UI.Load
Page.Load
UI.LoadComplete
Page.LoadComplete
UI.PreRender
Page.PreRender
UI.PreRenderComplete
Page.PreRenderComplete

如果使用了MasterPage,则MasterPage中的事件和ContentPage中的事件按照下面顺序激活:

ContentPage.PreInit
Master.Init
ContentPage.Init
ContentPage.InitComplite
ContentPage.PreLoad
ContentPage.Load
Master.Load
ContentPage.LoadComplete
ContentPage.PreRender
Master.PreRender
ContentPage.PreRenderComplete

更进一步,如果ContentPage继承BasePage,那么,各事件的执行顺序将变成:

UI.PreInit
ContentPage.PreInit
Master.Init
UI.Init
ContentPage.Init
UI.InitComplite
ContentPage.InitComplite
UI.PreLoad
ContentPage.PreLoad
UI.Load
ContentPage.Load
Master.Load
UI.LoadComplete
ContentPage.LoadComplete
UI.PreRender
ContentPage.PreRender
Master.PreRender
UI.PreRenderComplete
ContentPage.PreRenderComplete

即:先加载继承页的,在加载自己的,如果继承页有继承则先加载继承页的继承。

posted @ 2008-06-07 14:05 zhangsir 阅读(7) | 评论 (0)编辑
名称:  Cooltips  
作者:  
浏览器兼容:
  • Firefox 1.5+
  • Opera 9+
  • Internet Explorer 6+
  •    
       prototype的tip插件,圆角、透明、渐隐渐现
    用于替代网页title属性的效果
    演示地址:  www.tryjs.cn/uploadfile/file/tooltips/tooltips.html
    下载地址:  下载地址
    posted @ 2008-06-04 14:40 zhangsir 阅读(6) | 评论 (0)编辑
    名称:  Moo Slidebox  
    作者:  
    浏览器兼容:
  • Firefox 1.5+
  • Opera 9+
  • Internet Explorer 6+
  •    
       完美的跨浏览器支持(IE 6/7,Opera and Firefox),不同于其他LightBox,mooSlideBox采用底部弹出+碰撞+拖拽效果,

    演示地址1:http://www.artviper.net/test/ajaxslide/index.html

    演示地址2:http://www.homelabel.cn/resources/js/mooSlide2/demo.htm
    下载地址:http://www.homelabel.cn/resources/js/mooSlide2/mooSlide2.rar
    posted @ 2008-06-04 14:22 zhangsir 阅读(1) | 评论 (0)编辑
    名称:  Shadowbox.js
    作者:  Michael J. I. Jackson
    演示地址:  http://mjijackson.com/shadowbox/
    下载地址:  http://mjijackson.com/shadowbox/download.php
    浏览器兼容:
  • Firefox 1.5+
  • Camino
  • Safari 2+
  • Opera 9+
  • Internet Explorer 6+
  •    Yahoo\Ext\Prototype\jQuery\MooTools\Dojo Toolkit
    无论你用以上哪个框架,这个效果都可以用...功能也相当强大

    posted @ 2008-06-04 13:54 zhangsir 阅读(11) | 评论 (0)编辑
    名称:  latentzoom

    演示地址:  http://www.homelabel.cn/sources/js/latentzoom/demo.html
    远程下载地址:  http://www.homelabel.cn/sources/js/latentzoom/latentzoom.rar

    浏览器兼容:
    Firefox 1.5+
    Camino
    Safari 2+
    Opera 9+
    Internet Explorer 6+  
    posted @ 2008-06-04 13:18 zhangsir 阅读(4) | 评论 (0)编辑
    Lightbox JS
    Lokesh Dhakar 译: croc
    查看原文
    http://www.huddletogether.com/projects/lightbox2

    点击这里查看实例演示
    http://www.huddletogether.com/projects/lightbox2

    概要:

    Lightbox JS 是一个简单而又谦恭的用来把图片覆盖在当前页面上的脚本. 它能被快速安装并且运作于所有流行的浏览器.

    最新更新 Version 2.0

    图片集: 分组相关的图片并且能轻松的导航它们
    视觉特效: 奇特的自适应调整
    向后兼容: yes!

    如何使用:

    步骤 1 - 安装

    1、Lightbox v2.0 使用 Prototype 框架和 Scriptaculous 效果库. 你将需要外调这三个 Javascript 文件在你的 header.
    <script type="text/javascript" src="js/prototype.js"></script>
    <script type="text/javascript" src="js/scriptaculous.js?load=effects"></script>
    <script type="text/javascript" src="js/lightbox.js"></script>

    2、外调 Lightbox CSS 文件 (或添加 Lightbox 样式到你现行的样式表中).
    <link rel="stylesheet" href="css/lightbox.css" _fcksavedurl=""css/lightbox.css"" type="text/css" media="screen" />

    3、检查 CSS 并确定调用的 prev.gif 和 next.gif 文件在正确的位置. 同样要确定调用的 loading.gif 和 close.gif 文件及 lightbox.js 文件在正确的位置.

    步骤 2 - 激活

    1、添加 rel="lightbox" 属性到任何一个链接标签去激活lightbox. 例如:
    <a href="images/image-1.jpg" rel="lightbox" title="my caption">image #1</a>
    可选择项: 使用 title 属性加上说明.

    2、如果你有一套你想分组的相关图片, 接着上一部并且又在 rel 属性中添加一个带方括号的组名. 例如:
    <a href="images/image-1.jpg" rel="lightbox[roadtrip]">image #1</a>
    <a href="images/image-2.jpg" rel="lightbox[roadtrip]">image #2</a>
    <a href="images/image-3.jpg" rel="lightbox[roadtrip]">image #3</a>

    3、没有限定每个页面的图片组数量和每个图片组图片的数量. 超级棒!

    由于没有测试过2.04,所以就保留了原来版本的下载
    下载1: Lightbox JS v2.02
    http://www.huddletogether.com/projects/lightbox2/lightbox2.02.zip 

    http://www.huddletogether.com/projects/lightbox2/releases/lightbox2.04.zip

    下载地址2:
    http://www.homelabel.cn/sources/js/lightbox2.02.zip

    http://www.homelabel.cn/sources/js/lightbox2.04.zip

    posted @ 2008-06-04 12:47 zhangsir 阅读(10) | 评论 (0)编辑

    所谓盗链就是指其他网站把我们站点的文件链接帖到他们站上,这样白白占用我们的带宽。访问对于网站盗链行为,不敢恭维的。要实现防盗链,我们就得在IIS处理URL时拦截。

    效果图:

    未加防盗链之前:hm是我的机器名,用http://hm/myweb/default.aspxhttp://localhost/myweb/default访问结果一样。
    这幅图片是任人宰割的。

    加了防盗链之后虽然还是同一个网站但是http://hm/myweb/default.aspx已经不能访问那副花卉图片,被以下图片替代:

    加了防盗链之后用localhost还是正常的!http://localhost/myweb/default访问结果一样。

    原理:

    其实hm是我的机器,但是由于服务器域名是localhost所以即使是同一个网站也不能访问,所以就更别说
    www.其他网站域名.com这样的网站偷取我们的资源。关键就是IIS对所有的请求进行过滤看看是不是本站域名的。

    全部代码:

    Web.Config
    <?xml version="1.0"?>
    <!--
        注意: 除了手动编辑此文件以外,您还可以使用
        Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
         “网站”->“Asp.Net 配置”选项。
        设置和注释的完整列表在
        machine.config.comments 中,该文件通常位于
        \Windows\Microsoft.Net\Framework\v2.x\Config 中
    -->
    <configuration>
     <appSettings/>
     <connectionStrings/>
     <system.web>
        <httpHandlers>
          <add verb="*" path="*.jpg" type="myhandler,App_Code"/>
        </httpHandlers>
        <!--
                设置 compilation debug="true" 将调试符号插入
                已编译的页面中。但由于这会
                影响性能,因此只在开发过程中将此值
                设置为 true。
            -->
      <compilation debug="true"/>
      <!--
                通过 <authentication> 节可以配置 ASP.NET 使用的
                安全身份验证模式,
                以标识传入的用户。
            -->
      <authentication mode="Windows"/>
      <!--
                如果在执行请求的过程中出现未处理的错误,
                则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
                开发人员通过该节可以配置
                要显示的 html 错误页
                以代替错误堆栈跟踪。

            <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->
     </system.web>
    </configuration>

     myhandler.cs  新建myhandler.cs 类时系统提示你要放入App_Code
    using System;
    using System.Web;

    /// <summary>
    /// myhandler 的摘要说明
    /// </summary>

    public class myhandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            string FileName = context.Server.MapPath(context.Request.FilePath);
            if (context.Request.UrlReferrer.Host == null)
            {
                context.Response.ContentType = "image/JPEG";
                context.Response.WriteFile("~/no.gif");//被替换图片
            }
            else
            {
                if (context.Request.UrlReferrer.Host.IndexOf("localhost") > -1)//这里是你的域名
                {
                    context.Response.ContentType = "image/JPEG";
                    context.Response.WriteFile(FileName);
                }
                else
                {
                    context.Response.ContentType = "image/JPEG";
                    context.Response.WriteFile("~/no.gif");
                }
            }
        }
        public bool IsReusable
        {
            get { return true; }
        }
        public myhandler()
        {
        }
    }

    Default.aspx
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>清清月儿 http://blog.csdn.net/21aspnet</title</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <img src="pic130.jpg" /></div>
        </form>
    </body>
    </html>

    pic130.jpg

    no.gif

    IIS的配置:

    配置应用程序扩展:添加一个.jpg的扩展!

    注意:在本地的context.Request.UrlReferrer.Host就是localhost,
    我开始以为http://localhost/A/http://localhost/B/
    context.Request.UrlReferrer.Host,那就是大错特错。http://localhost/A/http://localhost/B/的context.Request.UrlReferrer.Host都是localhost,所以测试一个用localhost,所以,本地测试用机器名例如我的是hm测试即可。经过处理后用机器名访问就不行,虽然还是同一个站点,同一个文件,此处请多注意。

    下面是怎么防rar文件不从主站下载:方法和图片类似,不过下载我们强迫他们到我们站点。

    1、  首先创建一个类库项目ClassLibrary1:

    using System;

    using System.Web;    // 引用System.Web组件

     

     

     public class MyHandler : IHttpHandler

     {

      public MyHandler()

      {

      }

     

      #region IHttpHandler 成员

      public void ProcessRequest(HttpContext context)

      {

       // 跳转到WebForm1.aspx,由WebForm1.aspx输出rar文件

       HttpResponse response = context.Response;

       response.Redirect("../manage/downloads.aspx");

      }

     

      public bool IsReusable

      {

       get

       {

        // TODO:  添加 MyHandler.IsReusable getter 实现

        return true;

       }

      }

      #endregion

     }

     

    2、  在配置文件Web.config文件节点里增加如下节点:

     <httpHandlers>
          <add verb="*" path="*.rar" type="myhandler,App_Code"/>
        </httpHandlers>

    3、  在WebForm1.aspx里增加一个文本为“下载”的Button,其Click事件如下:

    注意别忘记了using System.IO;

    private void Button1_Click(object sender, System.EventArgs e)
      {
       FileInfo file = new System.IO.FileInfo(Server.MapPath("1.rar"));
       Response.Clear();

       Response.AddHeader("Content-Disposition", "filename=" + file.Name);

       Response.AddHeader("Content-Length", file.Length.ToString());

       string fileExtension = file.Extension;

     

       // 根据文件后缀指定文件的Mime类型

       switch (fileExtension)

       {

        case ".mp3":

         Response.ContentType = "audio/mpeg3";

         break;

        case "mpeg":

         Response.ContentType = "video/mpeg";

         break;

        case "jpg":

         Response.ContentType = "image/jpeg";

         break;

        case "........等等":

         Response.ContentType = "....";

         break;

        default:

         Response.ContentType = "application/octet-stream";

         break;

       }

     

       Response.WriteFile(file.FullName);

       Response.End();
     
      }

    4、  最后一步就是在IIS里增加一个应用程序扩展。在“默认网站”->“属性”->“主目录”->“配置”。在弹出的“应用程序配置”窗口里按“添加”,在弹出的“添加/编辑应用程序扩展名映射”窗口里“可执行文件”选择C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,在扩展名里输入“.rar”,然后确定即可。

    5、  在IE里输入http://localhost/web/1.rar,会立即跳转到http://localhost/web/WebForm1.aspx,然后按WebForm1.aspx的“下载”按钮就可以下载1.rar了。

    http://blog.csdn.net/xingkongmanbu/archive/2007/04/06/1554958.aspx

    转自: http://blog.csdn.net/skyaspnet/archive/2008/05/22/2469738.aspx

    posted @ 2008-06-03 15:10 zhangsir 阅读(8) | 评论 (0)编辑