图片轮换类,IE7、OP、FF、Chrome测试通过

<>
<head><>新闻图片轮换类</>
<script type=”text/”>
var fs = new FadeSlideClass();
fs.Width = 430;
fs.Height = 250;
fs.AddImage(“http://www.5bay.cn/Test/Image/001.jpg“, “#”, “新闻标题”);
fs.AddImage(“http://www.5bay.cn/Test/Image/002.jpg“, “#”, “新闻标题”);
fs.AddImage(“http://www.5bay.cn/Test/Image/003.jpg“, “//g.cn”, “去Google”);
fs.AddImage(“http://www.5bay.cn/Test/Image/004.jpg“, “#”, “新闻标题”);
fs.AddImage(“http://www.5bay.cn/Test/Image/005.jpg“, “#”, “新闻标题”);
fs.RenderTo(“divStage”);

/* 以下代码构造轮换类 */
function FadeSlideClass()
{
this.Width = 450;
this.Height = 300;
this.BorderColor = “#ddd”;
this.CurrentColor = “green”;
this.Delay = 5000;
var divContainer = document.createElement(“”);
var divImage = document.createElement(“div”);
var ulList = document.createElement(“ul”);
var me = this;
var arrImg = new Array;
this.Tag = divContainer;
this.AddImage = function(strImageUrl, strLink, strTitle)
{
   arrImg.push(arguments);
}
this.RenderTo = function(container)
{
   if(typeof container == “string”) container = document.getElementById(container) || container;
   if(typeof container == “string”) return setTimeout(function(){ me.RenderTo(container); }, 100);
   if(!arrImg.length) throw new Error(“尚未添加图片。”);
   var cssFloat = typeof ulList.style.cssFloat == “string” ? “cssFloat” : “styleFloat”;
   divContainer.style.width = this.Width + “px”;
   divContainer.style.height = this.Height + “px”;
   divImage.style.width = Math.round(this.Width * (arrImg.length – 1) / arrImg.length) + “px”;
   divImage.style.height = this.Height + “px”;
   divImage.style[cssFloat] = “left”;
   ulList.style.width = (this.Width – parseInt(divImage.style.width)) + “px”;
   ulList.style.height = this.Height + “px”;
   ulList.style.margin = “0px”;
   ulList.style.padding = “0px”;
   ulList.style[cssFloat] = “left”;
   divContainer.style.overflow = “hidden”;
   divImage.style.overflow = “hidden”;
   ulList.onmouseover = function(){ clearTimeout(me.Handler) };
   ulList.onmouseout = function(){ AutoPlay(); };
   InitImage(2);
   InitList(arrImg.length);
   container.appendChild(divContainer);
   divContainer.appendChild(divImage);
   divContainer.appendChild(ulList);
   LiMouseOver.call(ulList.firstChild);
   AutoPlay();
   this.AddImage = function(){ throw new Error(“该方法已过时。”); }
}
this.Display = function(imgThumb)
{
   var img = divImage.lastChild.lastChild;
   var opa = new OpacityClass(img);
   opa.Set(20);
   img.src = imgThumb.src;
   img.parentNode.href = imgThumb.parentNode.href;
   img.parentNode.title = imgThumb.parentNode.title;
   clearInterval(ulList.Handler);
   ulList.Handler = setInterval(function(){
    if(opa.Add(5) >= 100)
    {
     divImage.firstChild.lastChild.src = img.src;
     clearInterval(ulList.Handler);
    }
   }, 25);
}
function LiMouseOver()
{
   if(this == ulList.oldLi) return;
   if(ulList.oldLi) ulList.oldLi.style.borderColor = me.BorderColor;
   this.style.borderColor = me.CurrentColor;
   ulList.oldLi = this;
   me.Display(this.firstChild.firstChild);
}
function InitImage(count)
{
   if(–count) arguments.callee(count);
   var a = document.createElement(“a”);
   a.target = “_blank”;
   divImage.appendChild(a).style.position = “absolute”;
   var img = new Image;
   img.width = parseInt(divImage.style.width);
   img.height = me.Height;
   img.border = 0;
   if(!a.appendChild(img).filters) img.style.opacity = 1;
   else img.style.filter = “alpha(opacity=100)”;
}
function InitList(count)
{
   if(–count) InitList(count);
   var isIeNoDtd = document.compatMode != “CSS1Compat” && /msie/i.test(navigator.userAgent);
   var data = arrImg[count];
   var thumbWidth = parseInt(ulList.style.width);
   var thumbHeight = Math.round(me.Height / arrImg.length);
   var li = document.createElement(“li”);
   li.style.overflow = “hidden”;
   li.style.width = (isIeNoDtd ? thumbWidth : thumbWidth – 4) + “px”;
   li.style.height = (isIeNoDtd ? thumbHeight : thumbHeight – 4) + “px”;
   li.style.borderWidth = “2px”;
   li.style.borderStyle = “solid”;
   li.style.borderColor = me.BorderColor;
   var a = document.createElement(“a”);
   a.target = “_target”;
   a.href = data[1];
   a.title = data[2];
   var img = new Image;
   img.border = 0;
   img.width = thumbWidth;
   img.height = thumbHeight;
   img.src = data[0];
   img.style.verticalAlign = “top”;
   img.style.margin = “-2px”;
   a.appendChild(img);
   li.appendChild(a);
   li.style.listStyle = “none”;
   li.onmouseover = LiMouseOver;
   ulList.appendChild(li);
}
function AutoPlay()
{
   me.Handler = setTimeout(function()
   {
    LiMouseOver.call(ulList.oldLi.nextSibling || ulList.firstChild);
    AutoPlay();
   }, me.Delay);
}
function OpacityClass(tag)
{
   var isFilter = !!tag.filters;
   var obj = isFilter ? tag.filters.alpha : tag.style;
   this.Set = function(value)
   {
    obj.opacity = isFilter ? value : value / 100;
    return this;
   }
   this.Add = function(value)
   {
    var opa = isFilter ? obj.opacity : obj.opacity * 100;
    opa += value;
    if(opa > 100) opa = 100;
    obj.opacity = isFilter ? opa : opa / 100;
    return this;
   }
   this.valueOf = function()
   {
    return isFilter ? obj.opacity : obj.opacity * 100;
   }
}
}
</script>
</head>
<body>
<div id=”divStage”></div>
</body>
</html>

标签Tags:, , , , , , , , , , , , , , , ,

《高性能网站建设指南》读书笔记

规则1,减少HTTP请求

这是最重要的原则,如果14条规则里只能选一条,那就是它了。可以通过多种方法减少HTTP请求,例如合并图片,合并JS和CSS等等。这一点薄荷网有很多改进的余地,首先应该把现在的JS合并了。

规则2,使用内容发布网络

内容发布网络就是CDN了,但是CDN似乎挺贵的,目前还不适合薄荷网,不过可以考虑自己弄一个网通的静态资源服务器解决有中国特色的可恶的南北互通问题。

规则3,添加Expires头

这个没什么好说的,是个建网站的人都应该知道。目前薄荷网图片,,,flash过期时间设置了3年,可以说是永久了,:) Expires有个麻烦的地方是内容更新问题,Ruby on Rails这方面处理的非常棒,它是在文件名后面自动带了

资源文件的timestamp,完美解决。 (更多…)

标签Tags:, , , , , , , , , , , , , , , , , , , , ,

JAVASCRIPT加密解密终级指南

  本文一共介绍了七种JAVASCRIPT加密方法。

  一:最简单的加密解密

  二:转义字符的妙用

  三:使用Microsoft出品的脚本编码器Script Encoder来进行编码 (自创简单解码)

  四:任意添加NUL空字符(十六进制00H) (自创)

  五:无用内容混乱以及换行空格TAB大法

  六:自写解密函数法

  七:错误的利用

  在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的JAVASCRIPT代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的……^*^

  但我们也应该清楚地认识到因为JAVASCRIPT代码是在IE中解释执行,要想绝对的保密是不可能的,我们要做的就是尽可能的增大拷贝者复制的难度,让他知难而退(但愿~!~),下面我结合自己这几年来的实践,及个人研究的心得,和大家一起来探讨一下网页中JAVASCRIPT代码的加密解密技术。 (更多…)

标签Tags:, , ,

控制 Flash Player 的 JavaScript 方法一览表

加密JS,从而实现间接加密swf。相关工具及例子:

·T4nk JS混淆工具
  用于javascript的混淆加密。
·Encrypt
  加密网页脚本,包括 HTML source code, , VBScript, text, links and graphics 等。
·从Flash到JavaScript的通讯,从JavaScript到Flash的通讯
·控制 的 JavaScript 方法一览表:
  ·播放动画:Play()
   例:(网页中的 Flash id).Play();
  ·停止动画:StopPlay()
  ·动画是否正在播放:IsPlaying()
  ·跳转到某帧:GotoFrame(frame_number)
  ·获取动画总帧数:TotalFrames()
  ·回传当前动画所在帧数:CurrentFrame()
  ·使动画返回第一帧:Rewind()
  ·放大指定区域:SetZoomRect(left,top,right,buttom)
  ·改变动画大小:Zoom(percent)
  ·使动画在 x,y 方向上平移:Pan(x_position,y_position,unit)
  ·返回动画被载入的百分比:PercentLoaded()
  ·加载动画:LoadMovie(level_number,path)
   例:(网页中的 Flash id).LoadMovie(0, "***/***.swf");
  ·movie_clip 跳转到指定帧数:TGotoFrame(movie_clip,frame_number)[Page]
   例:(网页中的 Flash id).TGotoFrame("_root.实例名.次实例名",帧数);
  ·movie_clip 跳转到指定标签:TGotoLabel(movie_clip,label_name)
   例:(网页中的 Flash id).TGotoLabel("_root.实例名.次实例名","标签名");
  ·回传 movie_clip 当前帧:TCurrentFrame(movie_clip)
  ·回传 movie_clip 当前标签:TCurrentLabel(movie_clip)
  ·播放 movie_clip:TPlay(movie_clip)
  ·停止 movie_clip 的播放:TStopPlay(movie_clip)
  ·获取变量:GetVariable(variable_name)
  ·变量赋值:SetVariable(variable_name,value)
  ·call 指定帧上的 action:TCallFrame(movie_clip,frame_number)
  ·call 指定标签上的 action:TCallLabel(movie_clip,label)
  ·获取 movie_clip 的指定属性:TGetProperty(movie_clip,property)
  ·设置 movie_clip 的指定属性:TSetProperty(movie_clip,property,number)

标签Tags:, , , , ,

用javascript实现页面无刷新更新数据

以下正文:  
程序设计中会经常碰到一种情况,就是事先无法得知用户会需要哪些数据,必须根据用户选择后再从服务

器重新提取数据后反馈给用户。比如一简单的情况,用户选择省份以后,我们立即会在市里边将这个省的

所有市重新显示出来。这种情况一般需要将整个页面刷新后才可以重新读取,但这样不仅效率不高外,也

显得不太优雅。其实用javascript结合微软件的XMLHTTP对象,我们可以不用刷新,“稍稍”的就可以将

数据从服务器上读取出来,显得既专业,又高效。
下面我们就以一个验证用户是否被注册的情况来演示这种技术。 (更多…)

标签Tags:, , ,

javascript 只允许输入数字英文\中文

ENTER键可以让光标移到下一个输入框
〈input onkeydown="if(event.keyCode==13)event.keyCode=9" 〉 〈br〉

只能是中文〈input onkeyup="value=value.replace(/[ -~]/g,'')" onkeydown="if(event.keyCode==13)event.keyCode=9"〉 〈br〉

屏蔽输入法〈input style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9"〉 〈br〉

只能输入英文和数字〈input onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" onkeydown="if(event.keyCode==13)event.keyCode=9"〉 〈br〉

只能是数字〈input onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"〉〈br〉

只能显示,不能修改〈input readonly value="只能显示,不能修改"〉

标签Tags:, , , ,