详解链接的rel与target

最近在做项目中,发现target=”new”,在new出来的页面就不起作用了,郁闷啊!

关于target=”_blank”去留的问题在网上已经被反复争议很多次了。有的说要留,有的说要去掉。主张留的一方主要是考虑到target=”_blank”的属性目前来讲还没有一个好的方式来解决,而主张去的一方则拿出了rel与JS的解决方案。target=”_blank”是否的存在是否有必要我想目前还有很多正处在一种盲区。我查阅了相关的文献,发现其实情况并非是我们所想的那样,事实上target=”_blank”并非是不符合标准的,而用rel与JS的解决方案也是没有必要的,因为这是个误区,只要我们了解了rel与target的真正含义我们就清楚了其实这里本不应存在争议。下面我将我通过查阅文献所得到的知识与大家分享,我们先来了解一下target与rel的含义:

target ,允许指定在什么位置显示已经选择的超链接内容。也就是说链接的内容将在什么样的窗口被显示。target 的属性值有四个保留的名称,分别是:_blank,_self,_parent,_top。其中_blank的意思是浏览器总在一个新打开的、未命名的窗口中载入target=”_blank”链接的文档。这里大家也许会很不理解“未命名”是什么意思。事实上target 是可以给新打开的窗口赋一个ID,例如:target=”name” 这就表明通过target=”name”链接载入的文档将会在一个叫”name”的窗口显示。如果没有ID为”name”的窗口,那么浏览器就会新建一个名为”name”的窗口来显示链接文档。如果当前窗口的ID就是”name”那么这个链接文档就会在当前的窗口中替换原有的内容显示出来。而_self的意思其实就是当前文档,<a>的默认目标就是_self,这个属性值一般来说是用不到的。_parent是使链接文档在父级窗口显示,这个属性值只在框架结构中使用,如果身本就是顶级框架,那么其作用与_self相同。_top同样是应用在框架中的,但是他的效果是清除框架来显示目标文档。这对于从框架结构转向无框架结构是很有作用的。

现在我们知道了,target 是一目标显示的属性与浏览器密切相关的。那么rel又是什么呢, 为什么很多人把他当作是target 的替代属性呢?下面我们就来认识一下rel。其实不只有一个rel还有一个与之对应的属性叫rev,这两个属性的意思分别是:从源文档到目标文档的关系;从目标文档到源文档的关系。这里的源文档可以理解为链接所处在的当前文档,而目标文档也就是这个链接将要打开的文档。这下我们应该清楚了,其实rel与rev是一种文档之前的链接关系,而并非是与浏览器相关的如何显示目标文档的属性。

那么rel与rev有哪些关系呢?下面将一一列取并解释其中的含义:

next,链接到下一个文档;
prev,链接到前一个文档;
head,链接到集合中的顶级文档;
toc,链接到集合的目录;
parent,链接到源上面的文档;
Child,链接到源下面的文档;
index,链接到此文档的索引;
glossary,链接到此文档的术语表;

其中next与prev是一组。表明了当前文档与目标文档之前的关系是同级的关系,可以写成这样<a href=”movie_002.htm” rel=next rev=prev>。head与toc可以形成一个组合,表示者是由目录链接到最终的文档,或是由文档链接到目录。parent与child是一组,表示着由当前的文档链接到父级文档或是子级文档。而index与glossary可以与head分别组合,形成由文档到索引,或是由索引到文档;文档到术语表或是术语表到文档。

也许这样讲可能还是不很清楚,下面举个例子:我这里整理了一个电影文档资源,那么我需要对这些资源进行分类,我把电影分成:武侠片、战争片、爱情片、恐怖片、纪录片。那么我在电影根目录需要链接到下面的子类的时候那么链接的关系应该是:rel=child rev=parent ,而如果当前是武侠片的频道页,我需要转爱情片频道或是其它频道时,那么链接关系就应该是:rel=next rev=prev,当我们由一个武侠片链接到“卧虎藏龙”这部电影的文档时链接的关系应该是:rel=head rev=toc,当由“卧虎藏龙”链接到索引的时候链接关系又变成了:rel=index rev=head。

由于目前的CSS还不能抓取rel与rev的属性值,所以没有办法给不同关系的链接提供不同的样式,所以现在rel与rev只是用来使得网页的语义性更为完善。

关于Web前台开发工程师

随着web2.0技术的兴起,Web前端技术人员会越来越火的,也肯定是颇为短缺的。WEB前端,指的是:交互-设计-制作三个角色的组合。

[关于Web前端工程师]
http://bbs.blueidea.com/thread-2792029-1-1.html
http://www.junchenwu.com/2007/11/front_end_web_developer.html
http://www.jluvip.com/blog/article.asp?id=377
http://www.planabc.net/article.asp?id=170

uploads/200712/06_001259_htmlhire.jpg

再看看相关公司对应职位的招聘,也能从中找到自己的方向,他们在招聘:

前端开发工程师 Web Developer (1名)
职位描述:
1、负责网站WEB页面前端开发;
2、对WEB设计稿进行切割并且符合W3C标准;
3、实现各种页面脚本需求,并协同技术部门完成产品开发计划;
4、长期进行产品维护和更新升级。
职位要求:
1、精通xHTML、XML、CSS、Javascript、ActionScript等语言;
2、对W3C标准有相当高的认识,精通DIV,能够熟练的对页面进行切割;
3、有Ajax或Flash的RIA应用开发经验;
4、熟悉一门非Web前端脚本的语言(如Java/PHP/C++),并有项目经验和案例;
5、对专业有一定的追究,乐观开朗,思路清晰,沟通能力强;
6、一年相关工作经验;
7、计算机等相关专业出身,本科以上优先考虑。

十六、 交互设计师 Interaction Designer (1名)
职位描述:
1、负责网站用户界面设计;
2、进行内外广告的创意设计制作;
3、频道改版运营专题设计制作并进行独立发布;
4、用户体验方案的执行。
职位要求:
1、热爱设计事业,对交互设计有很高的热情和追究;
2、经历过各种类型的网页设计,清楚什么是商业设计;
3、对设计需求有着精准的市场把握和国际视野;
4、有非常好的视觉表现力和创意想法;
5、曾经试图用div切割页面,并有成功案例;
6、爱好收集楼书杂志DM或收藏好玩网站;
7、对专业有一定的追究,乐观开朗,思路清晰,沟通能力强;
8、专心做网页一年以上,有部分比较优秀的作品;
9、广告设计、视觉传达、工业设计等相关专业出身。

五、 UI设计师 (1名)
职位描述:
网页设计。
职位要求:
1、计算机、设计、美术或相关专业,大专以上学历;
2、两年以上网站设计及相关工作经验,能熟练使用Photoshop,CorelDraw(或Illustrator),Dreamwaver、Fireworks、Flash等软件;
3、熟练掌握html代码,能应用javascript,css,div;
4、认真细致并能承受较大的工作压力;
5、同时有平面设计能力的优先考虑。

公司-上海P2A
我们的HTML group在寻找一位有一定经验的web前端开发人员加入我们的团队,我们希望您是具有较好沟通能力的人,能和团队一起协作,对工作上下游的知识都有了解。

工作内容:
负责项目网站的前端开发和维护。

职位要求:
1、熟悉并热衷于各种Web前端技术,包括XHTML /CSS/Javascript等;
2、熟悉Web标准,对可用性方面的概念有了解。
2、良好的沟通能力,能够和设计师,程序员进行有效的沟通;
3、责任心强,对待工作细心、耐心;富有团队协作精神,积极、自信、敬业。

具备以下条件优先:
1、大型网站的前端开发经验。
2、基于Ajax的RIA应用开发经验

公司-土豆网
页面原型工程师:
1、负责将需求文档转换为可视的,可操作的HTML页面原型,不要求设计、前端以及性能,但是要求沟通和工作都很仔细。
2、在技术能力上,能力当然越高越好,如果能够达到直接交付前端做无缝开发,那是最好的。
3、如果技术不能达到前端工程师的要求,你可能暂时不会参加到土豆网一线页面的项目开发中,但是,我想,每一个流程都是很重要,很珍贵的。

总体说来,此职位对前端技术的要求大为降低了,但是在沟通和交流,以及文档管理等方面略有要求:
1、对W3C网页标准(Web Standards)有基本的理解:
·熟悉结构层代码(XHTML)、样式层代码(CSS),对行为层代码(Javascript)可以基本运用;
·对语义、结构与内容分离等有基本理解;
2、从事代码方向工作
3、能够从需求文档精确还原高保真的页面原型

我们继续招聘土豆的第三名前端工程师:
1、对W3C网页标准(Web Standards)有较深理解
·精通结构层代码(XHTML)、样式层代码(CSS)、行为层代码(Javascript),三个都要好;
·对语义、结构与内容分离等有深刻理解;
·了解后台程序到数据库等制作流程;
2、有成熟作品,从事代码方向工作
·如果你有blog,最好不过了;

Web前端UI开发人员
1.XHTML/DOM
熟悉W3C标准,对XHTML代码有丰富的使用经验,能熟练编写符合Web标准的页面;
了解DOM ( Document Object Module ),能自如应用DOM控制页面元素;
熟悉IE、Firefox、Opera等浏览器,了解各浏览器的页面呈现异同;
2. Javascript
1年以上Javascript开发经验; 了解面向对象编程原理,能在Javascript中基本实
现面向对象;对基于Javascript的Frameworks有一定的了解;
对优化Javascript的执行效率有一定的了解和研究;对复杂体结构的Javascript代
码有较好的组织和管理方法;
3. AJAX
熟练使用XMLHTTP/XMLREQUEST进行异步数据交互;能使用Javascript操作XML节点;
3. 满足以上条件的美工或有PHP,Python开发经验者优先;

_____________________________________________________________________

  想要打造并拥有一流的Web产品开发团队,在团队成员基础能力上一定要下功夫。对于Web前端产品开发来说,仅仅掌握Web1.0时代简单的”网页套接”是完全不够的。我结合自己的团队配备,特此罗列了Web前端产品工程师所涉及的技能列表如下:
  通过许多实际项目,个人认为一个完备的前端产品开发团队,必须拥有如下的人才配备,也希望大家补充:

  ◎ 团队全体成员达到所有技能中的a级标准
  ◎ 团队全体成员必须掌握两项技能中的b级标准,并保证所有的b级标准在该团队中有50%以上成员能达到
  ◎ 团队全体成员必须掌握一项技能中的c级标准,并保证所有的c级标准在该团队中有25%以上成员能达到

  具体技能描述:

  【必备】UserInterface

◎ PhotoShop/Fireworks Design
  a – 配合美工将草图形成具体的符合WebPage的设计
  b – 有快速制作分层高品质PSD、PNG的能力
  c – 能迅速将PSD、PNG的内容构思成div+css或者table等HTML代码

◎ Flash Design
  a – 基本动画效果
  b – 复杂的交互体系设计,了解第三方swf辅助设计软件
  c – 复杂的交互体系设计以及较强的对各类外埠资源(PNG、JPG、MP3、WAV等)的整合能力。精通部分第三方辅助设计软件(AE、SwishMax、Swift3D等)

【必备】Browser-side (Web Application)

◎ XHTML/CSS
  a – 基本的layout实现
  b – 严格跨平台的layout实现以
  c – 优雅的HTML code,尽可能符合标准并有SEO的考虑因素。在任何平台、浏览器下基本保持一致。不要求了解各种CSS的hacks,但要求知道遇到问题应该如何查阅资料以在第一时间内解决。能够为JavaScript开发人员提供最好操作的DOM结构,让JS开发人员在开发的时候认为”一切都已经准备就绪了”,而不是”捉襟见肘”。

◎ JavaScript/Ajax/DOM
  a – 基本的DOM操作,了解AJAX,可以实现数据通信
  b – 基本的DOM操作,能写高效率的OOP代码,以降低维护成本
  c – 基于需求,进行不同的开发,选择合适的框架,做到代码效率最高,用户体验最好,代码下载量最小,并且可以在单独甚至更多产品线中最大限度重用代码

页面优化-如何减少网页的内存与CPU占用

有的网页看起来并不大但打开会很卡,有的网页虽然很长但使用流畅,占用用户电脑的内存与CPU就影响这些。

浏览器问题,有各自的浏览器处理内存问题会影响到,但几乎没办法控制得了,Windows上的:

IE系列,刷新回收的量不大,但最小化会释放内存,。
Firefox2据说也会在最小化回收,可我从没见过最垃圾,用多少是多少,基本不回收。据说prototype的ajax还会引起内存一直增加。
Opera最好。一直控制得很好。不存在什么问题。。
Linux的内存分配机制与Win的不一样,有多少用多少,如果浏览器占光时说不定会干掉系统。

页面问题,浏览器渲染页面会消耗内存和CPU,能减少一点就减少点。

结构上
使用DocType,告诉浏览器你在用什么,html4也有DTD。也许Transitional更适合你
如果使用的是XHTML并能保持良好结构的话,记得输出相应的MIME跟XML头1,可以减少浏览器的代码检查,
保持结构的完整,不要让浏览器帮你补全代码。
控制页面的文件大小,可以通过程序把为了看代码比较舒服的缩进去掉。2~3K也是大小。
iframe会产生新的页面,其实有很多方式可以代替iframe
引入的JS与CSS可以适当合并,同样背景图片也可以合并,甚至有人连Flash都合并
给已知宽高的内容图片/Object加上宽度的属性可以减少页面的局部重渲染
表现上
质量99跟70的jpg在大多数情况下只有文件有大小不一样。gif的也一样,特别是小图标,256色跟128色的差别是文件大小.
flash动得太快吃CPU很大,控制每秒的帧数及动画的效果可以减少一些,如果把品质用中低显示会省很多资源,但这样却牺牲了效果。。quality属性 有时选择Autolow2 或者Autohigh会更适合,没必要一直low 或者best,
flash使用矢量图会节省文件大小,但计算复杂的图形跟动画时花的是CPU。复杂的太多滤镜,则会占用大量内存,模糊滤镜有减少些3。
IE的滤镜也是比较占用内存,同时也有兼容性问题。全屏的半透明很吃资源的。
2*2的图片跟8*8的图片大小差不多,但是平铺背景2*2却占用大很多。
gif动画同样有帧的概念,别把gif当成flash来玩就行。
行为上
别为了使用一个$()引入整个prototype或jQuery,它们有更多的作用。
AJAX很帅。但是用xml会用上XML解析器,有人推荐用JSON,可是这样要eval数据,其实可以直接import已经是对象的script来用。只是要多传个对象名,或者把对象名写死,或者像flickr那样jsonFlickrApi({“xxx”:”xxx”}),直接当函数用,挖哈哈。
实现某些效果时能用visibility:hidden解决时就别用display:none来玩。
在这里强调js变量要注全局跟局部等等的意义并不大,JS复杂的地方也不是一两句能说得清的,关注大家关注月影的正在出版的新书吧。^^
其实这里有的内容有不少跟如何快速的呈现我们的网页相近,不过那篇是以处理服务端为主,但在很多时候,节省服务端资源消耗的同时也会节省客户端的资源消耗。

再其实,这篇已经蹲在草稿箱里好久了,一直没有时间去整理。现在给的也不是完整的,因为没有完整,慢慢补充吧。

——————————————————————————–

产生问题:虽然会引起浏览器的模式问题,但问题是可以解决滴。参考Serving up XHTML with the correct MIME type,派送XML头浏览器不会容错显示,出现错误结构会导致整个页面无法显法。
Autolow: 优先考虑速度,但是也会尽可能改善外观。 回放开始时,消除锯齿功能处于关闭状态。 如果 Flash Player 检测到处理器可以处理消除锯齿功能,就会打开该功能。
Autohigh:开始时回放速度和外观两者并重,必要时会牺牲外观来保证回放速度。 回放开始时,消除锯齿功能处于打开状态。如果实际帧频降到指定帧频之下,就会关闭消除锯齿功能以提高回放速度。使用此设置可模拟“消除锯齿”命令(“视图”>“预览模式”>“消除锯齿”)。
模糊滤镜:使用模糊滤镜时,如果用于 blurX 和 blurY 的值是 2 的整数次幂(例如 2、4、8、16 和 32),则可以加快计算速度,并且可以使性能提高 20% 到 30%(flash的帮助是介样说滴)。

我的面试题目-什么是DOCTYPE

我面试新人总会一两题CSS的题目,最多的出的是什么是DOCTYPE ?
我的神啊,n个人直接说不知道,问什么是DTD,他说只会DIV;呵呵,知道DOCTYP和DTD的人很少啊,我不是在这里吹牛,只是觉得很奇怪!

DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本。
其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。

要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。

XHTML 1.0 提供了三种DTD声明可供选择:

过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。完整代码如下:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>

严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>。完整代码如下:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>

框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。完整代码如下:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd“>

我们选择什么样的DOCTYPE
理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。

注:上面说的”表现层的标识、属性”是指那些纯粹用来控制表现的tag,例如用于排版的表格、背景颜色标识等。在XHTML中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。

打个比方:人体模特换衣服。模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。而原来HTML4中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难。呵呵,有点抽象了,这个概念需要我们在应用过程中逐步领会。

补充
DOCTYPE声明必须放在每一个XHTML文档最顶部,在所有代码和标识之上。

CSS控制改变鼠标

首先要制作或者寻找一套适合网页风格的鼠标,我使用的鼠标是weste.ani和weste2.ani,在,将两个文件存放到的网站的文件夹ani,然后在你的网页文件的</head></head>之间加上代码:
程序代码
    <style type=”text/css”>
    <!–
         body {CURSOR: url(‘ani/weste.ani’)}
         A {CURSOR: url(‘ani/weste2.ani’)
    –>
    </style>
        再次浏览网页的时候你会发现,网页的鼠标显示已经改变了。当鼠标悬停在链接上的时候,显示的weste2.ani样子,其他时候显示weste.ani。
    原理:其实这种方法利用了CSS2的一个cursor的属性cursor:url (url),鼠标文件可以使用jpg、gif、ani和cur多种文件格式。需要注意的这种方式只能在IE5.5以上浏览器中正常显示。

Css制作table细线表格

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml“>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
<title>Css制作table细线表格</title>
<style type=”text/css” media=”screen”>
<!– /* PR-CSS */
table {
border-collapse:collapse; /* 关键属性:合并表格内外边框(其实表格边框有2px,外面1px,里面还有1px哦) */
border:solid #999; /* 设置边框属性;样式(solid=实线)、颜色(#999=灰) */
border-width:1px 0 0 1px; /* 设置边框状粗细:上 右 下 左 = 对应:1px 0 0 1px */
}
table caption {font-size:14px;font-weight:bolder;}
table th,table td {border:solid #999;border-width:0 1px 1px 0;padding:2px;}
tfoot td {text-align:center;}
–>
</style>
</head>

<body>
<table>
<caption>表格头</caption>
<thead>
<tr><th>名称</th><th>网址</th><th>时间</th></tr>
</thead>
<tfoot>
<tr><td colspan=”3″>下一页</td></tr>
</tfoot>
<tbody>
<tr><th>百度</th><td>http://www.baidu.com</td><td>2007.01.11</td></tr>
<tr><th>百度</th><td>http://www.baidu.com</td><td>2007.01.11</td></tr>
<tr><th>百度</th><td>http://www.baidu.com</td><td>2007.01.11</td></tr>
</tbody>
</table>
</body>
</html>

line-block的运用:最小宽度的设置

line-block:本身是内联盒模型的存在,又具备块状盒模型的特性。很好很强大的东西啊~

网上找到的正规描述:

这个值导致一个元素产生一个块状盒模型(block box),而本身作为单一的内联盒模型(inline box)流动排列(flow),类似一个被替代的元素。Display值为inline-block的元素内部形成一个块状盒模型,而本身形成类似一个内联的被替代元素

PS:可惜IE不支持,FF也不支持。HOHO~

IE解决方案:触发IE的layout,从而使该元素具备类似line-block的特性。

FF解决方案:使用moz专属属性:display::-moz-inline-box;

 

 

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml” lang=”zh-CN” xml:lang=”zh-CN”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<meta name=”keywords” content=”PRcss,xhtml,html,css,js,book,个人主页,无聊,神经,懒惰” />
<meta name=”description” content=”PRcss的个人主页,无聊的,神经的,懒惰的…” />
<meta name=”Author” content=”PRcss,qq:50198763″ />
<meta name=”Copyright” content=”本页版权归PRcss所有。All Rights Reserved” />
<link rel=”shortcut icon” href=”http://www.pr1984.com/favicon.ico” />
<title>line-block的运用:最小宽度的设置 – www.pr1984.com</title>
<style type=”text/css”><!–
.box { display:inline; zoom:1; min-width:400px; width:auto!important; width:400px; clear:right; border:1px solid #000; background:#ccc; }
html:lang(zh-CN) .box { display:-moz-inline-box; }
.box img { display:block; width:100px; height:300px; background:#c00; }
–></style>
</head>
<body>
<p class=”box”>
<img src=”pr.jpg” />
</p>
<p>测试</p>
</body>
</html>

javascript最常用的技巧

 n多的东西,自己找找吧

javascript事件查询综合
click() 对象.click() 使对象被点击。
closed 对象.closed 对象窗口是否已关闭true/false
clearTimeout(对象) 清除已设置的setTimeout对象
clearInterval(对象) 清除已设置的setInterval对象
confirm(”提示信息”) 弹出确认框,确定返回true取消返回false
cursor:样式 更改鼠标 样式 hand crosshair text wait help default auto e/s/w/n-resize

event.clientX 返回最后一次点击鼠标X坐标值;
event.clientY 返回最后一次点击鼠标Y坐标值;
event.offsetX 返回当前鼠标悬停X坐标值
event.offsetY 返回当前鼠标悬停Y坐标值

document.write(document.lastModified) 网页最后一次更新时间
document.ondblclick=x 当双击鼠标产生事件
document.onmousedown=x 单击鼠标键产生事件

document.body.scrollTop; 返回和设置当前竖向滚动条的坐标值,须与函数配合,
document.body.scrollLeft; 返回和设置当前横向滚动务的坐标值,须与函数配合,
document.title document.title=”message”; 当前窗口的标题栏文字
document.bgcolor document.bgcolor=”颜色值”; 改变窗口背景颜色
document.Fgcolor document.Fgcolor=”颜色值”; 改变正文颜色
document.linkcolor document.linkcolor=”颜色值”; 改变超联接颜色
document.alinkcolor document.alinkcolor=”颜色值”; 改变正点击联接的颜色
document.VlinkColor document.VlinkColor=”颜色值”; 改变已访问联接的颜色
document.forms.length 返回当前页form表单数
document.anchors.length 返回当前页锚的数量
document.links.length 返回当前页联接的数量
document.onmousedown=x 单击鼠标触发事件
document.ondblclick=x 双击鼠标触发事件
defaultStatus window.status=defaultStatus; 将状态栏设置默认显示

function function xx(){…} 定义函数
isNumeric 判断是否是数字
innerHTML xx=对象.innerHTML 输入某对象标签中的html源代码
innerText divid.innerText=xx 将以div定位以id命名的对象值设为XX

location.reload(); 使本页刷新,target可等于一个刷新的网页

Math.random() 随机涵数,只能是0到1之间的数,如果要得到其它数,可以为*10,再取整
Math.floor(number) 将对象number转为整数,舍取所有小数
Math.min(1,2) 返回1,2哪个小
Math.max(1,2) 返回1,2哪个大

navigator.appName 返回当前浏览器名称
navigator.appVersion 返回当前浏览器版本号
navigator.appCodeName 返回当前浏览器代码名字
navigator.userAgent 返回当前浏览器用户代标志

onsubmit onsubmit=”return(xx())” 使用函数返回值
opener opener.document.对象 控制原打开窗体对象

prompt xx=window.prompt(”提示信息”,”预定值”); 输入语句
parent parent.框架名.对象 控制框架页面

return return false 返回值
random 随机参数(0至1之间)
reset() form.reset(); 使form表单内的数据重置

split(””) string.split(””) 将string对象字符以逗号隔开
submit() form对象.submit() 使form对象提交数据

String对象的 charAt(x)对象 反回指定对象的第多少位的字母
lastIndexOf(”string”) 从右到左询找指定字符,没有返回-1
indexOf(”string”) 从左到右询找指定字符,没有返回-1
LowerCase() 将对象全部转为小写
UpperCase() 将对象全部转为大写
substring(0,5) string.substring(x,x) 返回对象中从0到5的字符
setTimeout(”function”,time) 设置一个超时对象
setInterval(”function”,time) 设置一个超时对象

toLocaleString() x.toLocaleString() 从x时间对象中获得时间,以字符串型式存在
typeof(变量名) 检查变量的类型,值有:String,Boolean,Object,Function,Underfined

window.event.button==1/2/3 鼠标键左键等于1右键等于2两个键一起按为3
window.screen.availWidth 返回当前屏幕宽度(空白空间)
window.screen.availHeight 返回当前屏幕高度(空白空间)
window.screen.width 返回当前屏幕宽度(分辨率值)
window.screen.height 返回当前屏幕高度(分辨率值)
window.document.body.offsetHeight; 返回当前网页高度
window.document.body.offsetWidth; 返回当前网页宽度
window.resizeTo(0,0) 将窗口设置宽高
window.moveTo(0,0) 将窗口移到某位置
window.focus() 使当前窗口获得焦点
window.scroll(x,y) 窗口滚动条坐标,y控制上下移动,须与函数配合
window.open() window.open(”地址”,”名称”,”属性”)
属性:toolbar(工具栏),location(地址栏),directions,status(状态栏),
menubar(菜单栏),scrollbar(滚动条),resizable(改变大小), width(宽),height(高),fullscreen(全 屏),scrollbars(全屏时无滚动条无参数,channelmode(宽屏),left(打开窗口x坐标),top(打开窗口y坐标)
window.location = ‘view-source:’ + window.location.href 应用事件查看网页源代码;

a=new Date(); //创建a为一个新的时期对象
y=a.getYear(); //y的值为从对象a中获得年份值两位数年份
y1=a.getFullYear(); //获取全年份数 四位数年份
m=a.getMonth(); //获取月份值
d=a.getDate(); //获取日期值
d1=a.getDay(); //获取当前星期值
h=a.getHours(); //获取当前小时数
m1=a.getMinutes(); //获取当前分钟数
s=a.getSeconds(); //获取当前秒钟数

对象.style.fontSize=”文字大小”;
单位:mm/cm/in英寸/pc帕/pt点/px象素/em文字高
1in=1.25cm
1pc=12pt
1pt=1.2px(800*600分辩率下)

文本字体属性:
fontSize大小
family字体
color颜色
fontStyle风格,取值为normal一般,italic斜体,oblique斜体且加粗
fontWeight加粗,取值为100到900不等,900最粗,light,normal,bold
letterSpacing间距,更改文字间距离,取值为,1pt,10px,1cm
textDecoration:文字修饰;取值,none不修饰,underline下划线,overline上划线
background:文字背景颜色,
backgroundImage:背景图片,取值为图片的插入路径

点击网页正文函数调用触发器:

1.onClick 当对象被点击
2.onLoad 当网页打开,只能书写在body中
3.onUnload 当网页关闭或离开时,只能书写在body中
4.onmouseover 当鼠标悬于其上时
5.onmouseout 当鼠标离开对象时
6.onmouseup 当鼠标松开
7.onmousedown 当鼠标按下键
8.onFocus 当对象获取焦点时
9.onSelect 当对象的文本被选中时
10.onChange 当对象的内容被改变
11.onBlur 当对象失去焦点
onsubmit=return(ss())表单调用时返回的值

直线 border-bottom:1x solid black
虚线 border-bottom:1x dotted black
点划线 border-bottom:2x dashed black
双线 border-bottom:5x double black
槽状 border-bottom:1x groove black
脊状 border-bottom:1x ridge black

1.边缘高光glow(color=颜色,strength=亮光大小)

2.水平翻转fliph() 使对象水平翻转180度

3.垂直翻转flipv() 使对象垂直翻转180度

4.对象模糊blur(add=true/false direction=方向 strength=强度)
add指定是否按印象画派进行模糊direction模糊方向strength模糊强度
5.对象透明alpha(opaction=0-100,finishopacity=0-100,style=0/1/2/3)
opaction对象整体不透明值finishopacity当对象利用了渐透明时该项指定结束透明位置的不透明值style指定透明方式0为整体透明,1为线型透明,2为圆型透明,3为矩形透明
6.去除颜色chroma(color=颜色值)使对象中颜色与指定颜色相同区域透明
7.建立阴影dropshadow(color=阴影颜色,offx=水平向左偏离像素,offy=水平向下偏离像素)
8.去色gray()使对象呈灰度显示
9.负片效果invert()使对象呈底片效果
10.高光light()使对象呈黑色显示
11.遮盖mask(color=颜色)使整个对象以指定颜色进行蒙板一次

opacity 表透明度水平.0~100,0表全透明,100表完全不透明
finishopacity表想要设置的渐变透明效果.0~100.
style 表透明区的形状.0表统一形状.1表线形.2表放射形.3表长方形.
startx.starty表渐变透明效果的开始时X和Y坐标.
finishx,finishy渐变透明效果结束时x,y 的坐标.
add有来确定是否在模糊效果中使有原有目标.值为0,1.0表”否”,1表”是”.
direction设置模糊的方向.0度表垂直向上,45度为一个单位.默认值是向左270度.left,right,down,up.
strength 只能用整数来确定.代表有多少个像素的宽度将受到模糊影响.默认是5个.
color要透明的颜色.
offx,offy分别是x,y 方向阴影的偏移量.
positive指投影方式.0表透明像素生成阴影.1表只给出不透明像素生成阴影..

AddAmbient:加入包围的光源.
AddCone:加入锥形光源.
AddPoint加入点光源
Changcolor:改变光的颜色.
Changstrength:改变光源的强度.
Clear:清除所有的光源.
MoveLight:移动光源.

freq是波纹的频率,在指定在对象上一区需要产生多少个完事的波纹.
lightstrength可对于波纹增强光影的效果.显著0~100正整数,正弦波开始位置是0~360度.0表从0度开始,25表从90度开始.
strength表振幅大小.

hand style=”cursor:hand”
crosshair style=”cursor:crosshair”
text style=”cursor:text”
wait style=”cursor:wait”
default style=”cursor:default”
help style=”cursor:help”
e-resize style=”cursor:e-resize”
ne-resize style=”cursor:ne-resize”
n-resize style=”cursor:n-resize”
nw-resize style=”cursor:nw-resize”
w-resize style=”cursor:w-resize”
s-resize style=”cursor:s-resize”
sw-resize style=”cursor:sw-resize ”
se-resize style=”cursor:se-resize”
auto style=”cursor:auto”

 

Javascript小技巧
  事件源对象
  event.srcElement.tagName
  event.srcElement.type
  捕获释放
  event.srcElement.setCapture(); 
  event.srcElement.releaseCapture(); 
  事件按键
  event.keyCode
  event.shiftKey
  event.altKey
  event.ctrlKey
  事件返回值
  event.returnValue
  鼠标位置
  event.x
  event.y
  窗体活动元素
  document.activeElement
  绑定事件
  document.captureEvents(Event.KEYDOWN);
  访问窗体元素
  document.all(“txt”).focus();
  document.all(“txt”).select();
  窗体命令
  document.execCommand
  窗体COOKIE
  document.cookie
  菜单事件
  document.oncontextmenu
  创建元素
  document.createElement(“SPAN”); 
  根据鼠标获得元素:
  document.elementFromPoint(event.x,event.y).tagName==”TD
  document.elementFromPoint(event.x,event.y).appendChild(ms) 
  窗体图片
  document.images[索引]
  窗体事件绑定
  document.onmousedown=scrollwindow;
  元素
  document.窗体.elements[索引]
  对象绑定事件
  document.all.xxx.detachEvent(‘onclick’,a);
  插件数目
  navigator.plugins
  取变量类型
  typeof($js_libpath) == “undefined”
  下拉框
  下拉框.options[索引]
  下拉框.options.length
  查找对象
  document.getElementsByName(“r1”);
  document.getElementById(id);
  定时
  timer=setInterval(‘scrollwindow()’,delay);
  clearInterval(timer);
  UNCODE编码
  escape() ,unescape
  父对象
  obj.parentElement(dhtml)
  obj.parentNode(dom)
  交换表的行
  TableID.moveRow(2,1)
  替换CSS
  document.all.csss.href = “a.css”;
  并排显示
  display:inline
  隐藏焦点
  hidefocus=true
  根据宽度换行
  style=”word-break:break-all”
  自动刷新
  <meta HTTP-EQUIV=”refresh” CONTENT=”8;URL=http://c98.yeah.net”>
  简单邮件
  <a  href=”mailto:aaa@bbb.com?subject=ccc&body=xxxyyy“> 
  快速转到位置
  obj.scrollIntoView(true)
  锚
  <a name=”first”>
  <a href=”#first”>anchors</a>
  网页传递参数
  location.search();
  可编辑
  obj.contenteditable=true
  执行菜单命令
  obj.execCommand
  双字节字符
  /[^\x00-\xff]/
  汉字
  /[\u4e00-\u9fa5]/
  让英文字符串超出表格宽度自动换行
  word-wrap: break-word; word-break: break-all;
  透明背景
  <IFRAME src=”1.htm” width=300 height=180 allowtransparency></iframe>
  获得style内容
  obj.style.cssText
  HTML标签
  document.documentElement.innerHTML
  第一个style标签
  document.styleSheets[0]
  style标签里的第一个样式
  document.styleSheets[0].rules[0]
  防止点击空链接时,页面往往重置到页首端。
  <a href=”javascript :function()”>word</a>
  上一网页源
  asp:
  request.servervariables(“HTTP_REFERER”)
  javascript :
  document.referrer
  释放内存
  CollectGarbage();
  禁止右键
  document.oncontextmenu = function() { return false;}
  禁止保存
  <noscript><iframe src=”*.htm”></iframe></noscript>
  禁止选取<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()> 
  禁止粘贴
  <input type=text onpaste=”return false”>
  地址栏图标
  <link rel=”Shortcut Icon” href=”favicon.ico”>
  favicon.ico 名字最好不变16*16的16色,放虚拟目录根目录下
  收藏栏图标
  <link rel=”Bookmark” href=”favicon.ico”>
  查看源码
  <input type=button value=查看网页源代码 onclick=”window.location = ‘view-source:’+
  ‘http://www.csdn.net/'”>
  关闭输入法
  <input style=”ime-mode:disabled”>
  自动全选
  <input type=text name=text1 value=”123″ onfocus=”this.select()”>
  ENTER键可以让光标移到下一个输入框
  <input onkeydown=”if(event.keyCode==13)event.keyCode=9″>
  文本框的默认值
  <input type=text value=”123″ onfocus=”alert(this.defaultValue)”>
  title换行
  obj.title = “123&#13sdfs&#32”
  获得时间所代表的微秒
  var n1 = new Date(“2004-10-10”.replace(/-/g, “\/”)).getTime()
  窗口是否关闭
  win.closed
  checkbox扁平
  <input type=checkbox style=”position: absolute; clip:rect(5px 15px 15px
  5px)”><br>
  获取选中内容
  document.selection.createRange().duplicate().text
  自动完成功能
  <input  type=text  autocomplete=on>打开该功能 
  <input  type=text  autocomplete=off>关闭该功能   
  窗口最大化
  <body onload=”window.resizeTo(window.screen.width –
  4,window.screen.height-50);window.moveTo(-4,-4)”>
  无关闭按钮IE
  window.open(“aa.htm”, “meizz”, “fullscreen=7”);
  统一编码/解码
  alert(decodeURIComponent(encodeURIComponent(“http://你好.com?as= hehe”)))
  encodeURIComponent对”:”、”/”、”;” 和 “?”也编码
  表格行指示
  <tr onmouseover=”this.bgColor=’#f0f0f0′” onmouseout=”this.bgColor=’#ffffff'”>

  //各种尺寸
  s  +=  “\r\n网页可见区域宽:”+  document.body.clientWidth;  
  s  +=  “\r\n网页可见区域高:”+  document.body.clientHeight;  
  s  +=  “\r\n网页可见区域高:”+  document.body.offsetWeight  +”  (包括边线的宽)”;  
  s  +=  “\r\n网页可见区域高:”+  document.body.offsetHeight  +”  (包括边线的宽)”;  
  s  +=  “\r\n网页正文全文宽:”+  document.body.scrollWidth;  
  s  +=  “\r\n网页正文全文高:”+  document.body.scrollHeight;  
  s  +=  “\r\n网页被卷去的高:”+  document.body.scrollTop;  
  s  +=  “\r\n网页被卷去的左:”+  document.body.scrollLeft;  
  s  +=  “\r\n网页正文部分上:”+  window.screenTop;  
  s  +=  “\r\n网页正文部分左:”+  window.screenLeft;  
  s  +=  “\r\n屏幕分辨率的高:”+  window.screen.height;  
  s  +=  “\r\n屏幕分辨率的宽:”+  window.screen.width;  
  s  +=  “\r\n屏幕可用工作区高度:”+  window.screen.availHeight;  
  s  +=  “\r\n屏幕可用工作区宽度:”+  window.screen.availWidth;  
//过滤数字
<input type=text onkeypress=”return
event.keyCode>=48&&event.keyCode<=57||(this.value.indexOf(‘.’)<0?event.keyCode==46:false)”
onpaste=”return !clipboardData.getData(‘text’).match(/\D/)” ondragenter=”return
false”>
//特殊用途
<input type=button value=导入收藏夹
onclick=”window.external.ImportExportFavorites(true,’http://localhost’);”>
<input type=button value=导出收藏夹
onclick=”window.external.ImportExportFavorites(false,’http://localhost’);”>
<input type=button value=整理收藏夹
onclick=”window.external.ShowBrowserUI(‘OrganizeFavorites’, null)”>
<input type=button value=语言设置  
onclick=”window.external.ShowBrowserUI(‘LanguageDialog’, null)”>
<input type=button value=加入收藏夹
onclick=”window.external.AddFavorite(‘http://www.google.com/’, ‘google’)”>
<input type=button value=加入到频道
onclick=”window.external.addChannel(‘http://www.google.com/’)”>
<input type=button value=加入到频道
onclick=”window.external.showBrowserUI(‘PrivacySettings’,null)”>
//不缓存
<META HTTP-EQUIV=”pragma” CONTENT=”no-cache”>
<META HTTP-EQUIV=”Cache-Control” CONTENT=”no-cache, must-revalidate”>
<META HTTP-EQUIV=”expires” CONTENT=”0″>

//正则匹配
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 
匹配首尾空格的正则表达式:(^\s*)|(\s*$)(像vbscript那样的trim函数)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w– ./?%&=]*)?
以下是例子:
利用正则表达式限制网页表单里的文本框输入内容:
用正则表达式限制只能输入中文:onkeyup=”value=value.replace(/[^\u4E00-\u9FA5]/g,”)”
onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\u4E00-\u9FA5]/g,”))”

1.用正则表达式限制只能输入全角字符: onkeyup=”value=value.replace(/[^\uFF00-\uFFFF]/g,”)”
onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\uFF00-\uFFFF]/g,”))”

2.用正则表达式限制只能输入数字:onkeyup=”value=value.replace(/[^\d]/g,”)
“onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\d]/g,”))”

3.用正则表达式限制只能输入数字和英文:onkeyup=”value=value.replace(/[\W]/g,”)
“onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\d]/g,”))”

//消除图像工具栏
<IMG SRC=”mypicture.jpg” HEIGHT=”100px” WIDTH=”100px” GALLERYIMG=”false”> 
or
<head>
<meta http-equiv=”imagetoolbar” content=”no”>
</head>
//无提示关闭

function Close()
{
 var ua=navigator.userAgent
 var ie=navigator.appName==”Microsoft Internet Explorer”?true:false
 if(ie)
 {
      var IEversion=parseFloat(ua.substring(ua.indexOf(“MSIE
“)+5,ua.indexOf(“;”,ua.indexOf(“MSIE “))))
  if(IEversion< 5.5)
  {
   var str  = ‘<object id=noTipClose
classid=”clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11″>’
       str += ‘<param name=”Command” value=”Close”></object>’;
       document.body.insertAdjacentHTML(“beforeEnd”, str);
       document.all.noTipClose.Click();
  }
      else
  {
       window.opener =null;
       window.close();
      }
   }
 else
 {
  window.close()
   }
}
//取得控件得绝对位置(1)

<script language=”javascript”> 
function getoffset(e)

 var t=e.offsetTop; 
 var l=e.offsetLeft; 
 while(e=e.offsetParent)
 { 
  t+=e.offsetTop; 
  l+=e.offsetLeft; 
 } 
 var rec = new Array(1);
 rec[0]  = t;
 rec[1] = l;
 return rec

</script>
//获得控件的绝对位置(2)
oRect = obj.getBoundingClientRect();
oRect.left
oRect.
//最小化,最大化,关闭
<object id=min classid=”clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11″> 
<param name=”Command” value=”Minimize”></object> 
<object id=max classid=”clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11″> 
<param name=”Command” value=”Maximize”></object> 
<OBJECT id=close classid=”clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11″> 
<PARAM NAME=”Command” value=”Close”></OBJECT> 
<input type=button value=最小化 onclick=min.Click()> 
<input type=button value=最大化 onclick=max.Click()> 
<input type=button value=关闭 onclick=close.Click()> 
//光标停在文字最后

<script language=”javascript”>
function cc()
{
 var e = event.srcElement;
 var r =e.createTextRange();
 r.moveStart(‘character’,e.value.length);
 r.collapse(true);
 r.select();
}
</script>
<input type=text name=text1 value=”123″ onfocus=”cc()”>
//页面进入和退出的特效

进入页面<meta http-equiv=”Page-Enter” content=”revealTrans(duration=x,
transition=y)”>
推出页面<meta http-equiv=”Page-Exit” content=”revealTrans(duration=x,
transition=y)”> 
这个是页面被载入和调出时的一些特效。duration表示特效的持续时间,以秒为单位。transition表示使
用哪种特效,取值为1-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 
//网页是否被检索
<meta name=”ROBOTS” content=”属性值”>
  其中属性值有以下一些:
  属性值为”all”: 文件将被检索,且页上链接可被查询;
  属性值为”none”: 文件不被检索,而且不查询页上的链接;
  属性值为”index”: 文件将被检索;
  属性值为”follow”: 查询页上的链接;
  属性值为”noindex”: 文件不检索,但可被查询链接;
  属性值为”nofollow”: 

//打印分页
<p  style=”page-break-after:always”>page1</p>  
<p  style=”page-break-after:always”>page2</p>  

//设置打印

<object id=”factory” style=”display:none” viewastext
  classid=”clsid:1663ed61-23eb-11d2-b92f-008048fdd814″
  codebase=”http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360
></object>
<input type=button value=页面设置 onclick=”factory.printing.PageSetup()”>
<input type=button value=打印预览 onclick=”factory.printing.Preview()”>
 
<script language=javascript>
function window.onload()
{
   // — advanced features
   factory.printing.SetMarginMeasure(2) // measure margins in inches
   factory.printing.SetPageRange(false, 1, 3) // need pages from 1 to 3
   factory.printing.printer = “HP DeskJet 870C”
   factory.printing.copies = 2
   factory.printing.collate = true
   factory.printing.paperSize = “A4”
   factory.printing.paperSource = “Manual feed”
   // — basic features
   factory.printing.header = “居左显示&b居中显示&b居右显示页码,第&p页/共&P页”
   factory.printing.footer = “(自定义页脚)”
   factory.printing.portrait = false
   factory.printing.leftMargin = 0.75
   factory.printing.topMargin = 1.5
   factory.printing.rightMargin = 0.75
   factory.printing.bottomMargin = 1.5
}
function Print(frame) {
  factory.printing.Print(true, frame) // print with prompt
}
</script>
<input type=button value=”打印本页” onclick=”factory.printing.Print(false)”>
<input type=button value=”页面设置” onclick=”factory.printing.PageSetup()”>
<input type=button value=”打印预览” onclick=”factory.printing.Preview()”><br>
<a href=”http://www.meadroid.com/scriptx/docs/printdoc.htm?static” 
target=_blank>具体使用手册,更多信息,点这里</a>
 
//自带的打印预览
WebBrowser.ExecWB(1,1) 打开 
Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口 
Web.ExecWB(4,1) 保存网页 
Web.ExecWB(6,1) 打印 
Web.ExecWB(7,1) 打印预览 
Web.ExecWB(8,1) 打印页面设置 
Web.ExecWB(10,1) 查看页面属性 
Web.ExecWB(15,1) 好像是撤销,有待确认 
Web.ExecWB(17,1) 全选 
Web.ExecWB(22,1) 刷新 
Web.ExecWB(45,1) 关闭窗体无提示 
<style media=print> 
.Noprint{display:none;}<!–用本样式在打印时隐藏非打印项目–> 
.PageNext{page-break-after: always;}<!–控制分页–> 
</style> 
<object  id=”WebBrowser”  width=0  height=0 
classid=”CLSID:8856F961-340A-11D0-A96B-00C04FD705A2″>    
</object>    
 
<center class=”Noprint” >
<input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)> 
<input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)> 
<input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)> 
</p> 
<p> <input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)> 
</center>
//去掉打印时的页眉页脚

<script  language=”JavaScript”>  
var HKEY_Root,HKEY_Path,HKEY_Key;
HKEY_Root=”HKEY_CURRENT_USER”;
HKEY_Path=”\\Software\\Microsoft\\Internet Explorer\\PageSetup\\”;
//设置网页打印的页眉页脚为空
function PageSetup_Null()
{
 try
 {
         var Wsh=new ActiveXObject(“WScript.Shell”);
  HKEY_Key=”header”;
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,””);
  HKEY_Key=”footer”;
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,””);
 }
 catch(e){}
}
//设置网页打印的页眉页脚为默认值
function  PageSetup_Default()
{  
 try
 {
  var Wsh=new ActiveXObject(“WScript.Shell”);
  HKEY_Key=”header”;
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,”&w&b页码,&p/&P”);
  HKEY_Key=”footer”;
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,”&u&b&d”);
 }
 catch(e){}
}
</script>
<input type=”button” value=”清空页码” onclick=PageSetup_Null()>
<input type=”button” value=”恢复页码” onclick=PageSetup_Default()>
//浏览器验证

function checkBrowser()

   this.ver=navigator.appVersion 
   this.dom=document.getElementById?1:0 
   this.ie6=(this.ver.indexOf(“MSIE 6”)>-1 && this.dom)?1:0; 
   this.ie5=(this.ver.indexOf(“MSIE 5″)>-1 && this.dom)?1:0; 
   this.ie4=(document.all && !this.dom)?1:0; 
   this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
   this.ns4=(document.layers && !this.dom)?1:0; 
   this.mac=(this.ver.indexOf(‘Mac’) > -1) ?1:0; 
   this.ope=(navigator.userAgent.indexOf(‘Opera’)>-1); 
   this.ie=(this.ie6 || this.ie5 || this.ie4) 
   this.ns=(this.ns4 || this.ns5) 
   this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns5 || this.ns4 || this.mac
|| this.ope) 
   this.nbw=(!this.bw) 
   return this;
}
//计算内容宽和高
<SCRIPT  language=”javascript”>  
function  test(obj)  
{  
       var  range  =  obj.createTextRange();  
       alert(“内容区宽度:  ”  +  range.boundingWidth    
                                                 +  “px\r\n内容区高度:  ”  + 
range.boundingHeight  +  “px”);  
             
}  
</SCRIPT>  
<BODY>  
<Textarea id=”txt” height=”150″>sdf</textarea><INPUT  type=”button” 
value=”计算内容宽度”  onClick=”test(txt)”>  
</BODY>
//无模式的提示框
function modelessAlert(Msg)
{
  
window.showModelessDialog(“javascript :alert(\””+escape(Msg)+”\”);window.close();”,””,”status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;”);

}
//屏蔽按键
<html>
<head>
  <meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
  <noscript><meta http-equiv=”refresh”
content=”0;url=about:noscript”></noscript>
  <title>屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键</title>
</head>
<body>
<script language=”Javascript”><!–
  //屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键
  //Author: meizz(梅花雨) 2002-6-18
function document.oncontextmenu(){event.returnValue=false;}//屏蔽鼠标右键
function window.onhelp(){return false} //屏蔽F1帮助
function document.onkeydown()
{
  if ((window.event.altKey)&&
      ((window.event.keyCode==37)||   //屏蔽 Alt+ 方向键 ←
       (window.event.keyCode==39)))   //屏蔽 Alt+ 方向键 →
  {
     alert(“不准你使用ALT+方向键前进或后退网页!”);
     event.returnValue=false;
  }
     /* 注:这还不是真正地屏蔽 Alt+ 方向键,
     因为 Alt+ 方向键弹出警告框时,按住 Alt 键不放,
     用鼠标点掉警告框,这种屏蔽方法就失效了。以后若
     有哪位高手有真正屏蔽 Alt 键的方法,请告知。*/
  if ((event.keyCode==8)  ||                 //屏蔽退格删除键
      (event.keyCode==116)||                 //屏蔽 F5 刷新键
      (event.ctrlKey && event.keyCode==82)){ //Ctrl + R
     event.keyCode=0;
     event.returnValue=false;
     }
  if (event.keyCode==122){event.keyCode=0;event.returnValue=false;}  //屏蔽F11
  if (event.ctrlKey && event.keyCode==78) event.returnValue=false;   //屏蔽 Ctrl+n

  if (event.shiftKey && event.keyCode==121)event.returnValue=false;  //屏蔽
shift+F10
  if (window.event.srcElement.tagName == “A” && window.event.shiftKey) 
      window.event.returnValue = false;             //屏蔽 shift 加鼠标左键新开一网页
  if ((window.event.altKey)&&(window.event.keyCode==115))             //屏蔽Alt+F4

  {
     
window.showModelessDialog(“about:blank”,””,”dialogWidth:1px;dialogheight:1px”);
      return false;
  }
}
</script>
屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键
</body>
</html>
//屏蔽打印
<style>
@media print{
* {display:none}
}
</style>
//移动的图层,拖动

1.<span style=’position:absolute;width:200;height:200;background:red’
onmousedown=MouseDown(this) onmousemove=MouseMove()
onmouseup=MouseUp()>meizz</span>
<script language=javascript>
var Obj;
function MouseDown(obj)
{
  obj=obj;
  Obj.setCapture();
  Obj.l=event.x-Obj.style.pixelLeft;
  Obj.t=event.y-Obj.style.pixelTop;
}
function MouseMove()
{
  if(Obj!=null)
  {
    Obj.style.left = event.x-Obj.l;
    Obj.style.top = event.y-Obj.t;
  }
}
function MouseUp()
{
  if(Obj!=null)
  {
    Obj.releaseCapture();
    obj=null;
  }
}
</script>
2.
<div id=”myDiv” src=”logo.gif” ondrag=”doDrag();”
onmouseover=”this.style.cursor=’hand'”
style=”position:absolute;left=100;top=100;” onmousedown=”doMouseDown();”>
<a href=”#” onclick=”return false”><h1>wlecome</h1></a>
</div>
<script language=”JavaScript” type=”text/javascript”>
var orgMouseX;
var orgMouseY;
var orgObjX;
var orgObjY;
function doDrag()
{
var myObject=document.all.myDiv;

var x=event.clientX;
var y=event.clientY;
myObject.style.left=x-(orgMouseX-orgObjX);
myObject.style.top=y-(orgMouseY-orgObjY);
 
}
function doMouseDown()
{
orgMouseX=event.clientX;
orgMouseY=event.clientY;
orgObjX=parseInt(document.all.myDiv.style.left);
orgObjY=parseInt(document.all.myDiv.style.top);
}

</script>
 
//文档状态改变

<iframe src=”a.html” id=”f” name=”f” scrolling=”no” frameborder=0 marginwidth=0
marginheight=0></iframe>
<script>
var doc=window.frames[“f”].document;
function s(){
 if (doc.readyState==”complete”){
  document.all.f.style.height=doc.body.scrollHeight
  document.all.f.style.width=doc.body.scrollWidth
 }
}
doc.onreadystatechange=s
</script>

//刷新后不变的文本框
<HTML>
<HEAD>
<META NAME=”save” CONTENT=”history”>
<STYLE>
   .sHistory {behavior:url(#default#savehistory);}
</STYLE>
</HEAD>
<BODY>
<INPUT class=sHistory type=text id=oPersistInput>
</BODY>
</HTML>
//访问剪贴板
(1)拖拽访问
event.dataTransfer.setData(“URL”, oImage.src);
sImageURL = event.dataTransfer.getData(“URL”)
(2)普通访问
window.clipboardData.setData(“Text”,oSource.innerText);
window.clipboardData.getData(“Text”);
//操作COOKIE

function SetCookie(sName, sValue)
{
 document.cookie = sName + “=” + escape(sValue) + “; “;
}
function GetCookie(sName)
{
 var aCookie = document.cookie.split(“; “);
 for (var i=0; i < aCookie.length; i++)
 {
  
  var aCrumb = aCookie[i].split(“=”);
  if (sName == aCrumb[0]) 
  return unescape(aCrumb[1]);
 }
 
}
function DelCookie(sName)
{
document.cookie = sName + “=” + escape(sValue) + “; expires=Fri, 31 Dec 1999
23:59:59 GMT;”;
}
//setTimeout增加参数
<script>
var _st = window.setTimeout;
window.setTimeout = function(fRef, mDelay) {
 if(typeof fRef == ‘function’){
  var argu = Array.prototype.slice.call(arguments,2);
  var f = (function(){ fRef.apply(null, argu); });
  return _st(f, mDelay);
 }
 return _st(fRef,mDelay);
}
function test(x){
 alert(x);
}
window.setTimeout(test,1000,’fason’);
</script>

//自定义的apply,call
Function.prototype.apply = function (obj, argu) {
 if (obj) obj.constructor.prototype._caller = this; 
 var argus = new Array();
 for (var i=0;i<argu.length;i++)
  argus[i] = “argu[” + i + “]”;
 var r;
 eval(“r = ” + (obj ? (“obj._caller(” + argus.join(“,”) + “);”) : (“this(” +
argus.join(“,”) + “);”)));
 return r;
};
Function.prototype.call = function (obj) {
 var argu = new Array();
 for (var i=1;i<arguments.length;i++)
  argu[i-1] = arguments[i];
 return this.apply(obj, argu);
};       

//下载文件
function DownURL(strRemoteURL,strLocalURL)
{
 try
 {
  var xmlHTTP=new ActiveXObject(“Microsoft.XMLHTTP”);
  xmlHTTP.open(“Get”,strRemoteURL,false);
  xmlHTTP.send();
  var adodbStream=new ActiveXObject(“ADODB.Stream”);
  adodbStream.Type=1;//1=adTypeBinary
  adodbStream.Open();
  adodbStream.write(xmlHTTP.responseBody);
  adodbStream.SaveToFile(strLocalURL,2);
  adodbStream.Close();
  adodbStream=null;
  xmlHTTP=null;
  
 }
 catch(e)
 {
  window.confirm(“下载URL出错!”);
 }
 //window.confirm(“下载完成.”);
}

//检验连接是否有效
function getXML(URL) 
{
 var xmlhttp = new ActiveXObject(“microsoft.xmlhttp”);
 xmlhttp.Open(“GET”,URL, false); 
 try
 { 
  xmlhttp.Send();
 }
 catch(e){}
 finally 
 {
  var result = xmlhttp.responseText;
  if(result) 
  {
   if(xmlhttp.Status==200)
   {
    return(true);
   }
   else 
   {
    return(false);
   }
  }
  else 
  {
   return(false);
  }
 }
}
//POST代替FORM
<SCRIPT language=”VBScript”>
Function URLEncoding(vstrIn)
    strReturn = “”
    For i = 1 To Len(vstrIn)
        ThisChr = Mid(vStrIn,i,1)
        If Abs(Asc(ThisChr)) < &HFF Then
            strReturn = strReturn & ThisChr
        Else
            innerCode = Asc(ThisChr)
            If innerCode < 0 Then
                innerCode = innerCode + &H10000
            End If
            Hight8 = (innerCode  And &HFF00)\ &HFF
            Low8 = innerCode And &HFF
            strReturn = strReturn & “%” & Hex(Hight8) &  “%” & Hex(Low8)
        End If
    Next
    URLEncoding = strReturn
End Function
Function bytes2BSTR(vIn)
    strReturn = “”
    For i = 1 To LenB(vIn)
        ThisCharCode = AscB(MidB(vIn,i,1))
        If ThisCharCode < &H80 Then
            strReturn = strReturn & Chr(ThisCharCode)
        Else
            NextCharCode = AscB(MidB(vIn,i+1,1))
            strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 +
CInt(NextCharCode))
            i = i + 1
        End If
    Next
    bytes2BSTR = strReturn
End Function
dim strA,oReq
strA = URLEncoding(“submit1=Submit&text1=中文”)
set oreq = CreateObject(“MSXML2.XMLHTTP”)
oReq.open “POST”,”http://ServerName/VDir/TstResult.asp”,false
oReq.setRequestHeader “Content-Length”,Len(strA)
oReq.setRequestHeader “CONTENT-TYPE”,”application/x-www-form-urlencoded”
oReq.send strA
msgbox bytes2BSTR(oReq.responseBody)
</SCRIPT>
//readyState是xmlhttp返回数据的进度,0=载入中,1=未初始化,2=已载入,3=运行中,4=完成
//组件是否安装
isComponentInstalled(“{6B053A4B-A7EC-4D3D-4567-B8FF8A1A5739}”, “componentID”))
//检查网页是否存在

function CheckURL(URL)
{
  var xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);
  xmlhttp.Open(“GET”,URL, false);
  try
  { 
    xmlhttp.Send(); 
    var result = xmlhttp.status;
  }
  catch(e) {return(false); }
  if(result==200)
  { 
    return true;
  }
  xmlhttp = null;
  return false;
}
//连接数据库

<script language=”javascript”>
  //用 JavaScript 写服务器端连接数据库的代码示例
  var conn = new ActiveXObject(“ADODB.Connection”);
  conn.Open(“Provider=SQLOLEDB.1; Data Source=localhost; User ID=sa; ”
    +”Password=; Initial Catalog=pubs”);
  var rs = new ActiveXObject(“ADODB.Recordset”);
  var sql=”select * from authors”;
  rs.open(sql, conn);
 shtml = “<table width=’100%’ border=1>”;
 shtml +=”<tr
bgcolor=’#f4f4f4′><td>au_id</td><td>au_lname</td><td>au_fname</td><td>phone</td><td>address</td><td>
city</td><td>state</td><td>zip</td></tr>”;
  while(!rs.EOF)
  {
 shtml += “<tr><td>” + rs(“au_id”) + “</td><td>” + rs(“au_lname”) + “</td><td>”
+ rs(“au_fname”) + “</td><td>” + rs(“phone”) + “</td><td>” + rs(“address”) +
“</td><td>” + rs(“city”) + “</td><td>” + rs(“state”) + “</td><td>” + rs(“zip”) +
“</td></tr>”;
 rs.moveNext;
  }
  shtml += “</table>”;
  document.write(shtml);
  rs.close(); 
  rs = null; 
  conn.close(); 
  conn = null;
</script>
//使用数据岛

<html>
<body>
srno:<input type=text datasrc=#xmldate DataFLD=srno size=”76″><BR>
times:<input type=text datasrc=#xmldate DataFLD=times size=”76″><BR>
<input id=”first” TYPE=button value=”<< 第一条记录”
onclick=”xmldate.recordset.moveFirst()”>
<input id=”prev” TYPE=button value=”<上一条记录”
onclick=”xmldate.recordset.movePrevious()”>  
<input id=”next” TYPE=button value=”下一条记录>”
onclick=”xmldate.recordset.moveNext()”>  
<input id=”last” TYPE=button value=”最后一条记录>>”
onclick=”xmldate.recordset.moveLast()”>   
<input id=”Add” TYPE=button value=”添加新记录” onclick=”xmldate.recordset.addNew()”> 
 

<XML ID=”xmldate”>
<infolist>
<info ><srno>20041025-01</srno><times>null</times></info>
<info ><srno>20041101-09</srno><times>2004年10月1日2点22分0秒</times></info>
</infolist>
</XML>
</body>
</html>
//获得参数
<body>
<a href=”javascript :location.href=location.href + ‘?a=1&b=2′”>search</a>
<script language=”JavaScript”>
<!–
var a = location.search.substr(1);
if(a.length>0)
{
 var re = /([^&]*?)\=([^&]*)/g
 var s = a.match(re);
 for(var i= 0;i<s.length;i++)
 {
  alert(s[i]);
  alert(s[i].split(“=”)[1]);
 }
}
//–>
</script>
</body>
//可编辑Select
<input type=text name=re_name
style=”width:100px;height:21px;font-size:10pt;”><span
style=”width:18px;border:0px solid red;”><select name=”r00″
style=”margin-left:-100px;width:118px; background-color:#FFEEEE;”
onChange=”document.all.re_name.value=this.value;”>
                <option value=”1″>11111111<option>
                <option value=”2″>222222</option>
                <option value=”3″>333333</option>
              </select>
              </span>
//设置光标位置

function getCaret(textbox)
{
 var control = document.activeElement;
 textbox.focus();
 var rang = document.selection.createRange();
  rang.setEndPoint(“StartToStart”,textbox.createTextRange())
 control.focus();
 return rang.text.length;
}
function setCaret(textbox,pos)
{
 try
 {
  var r =textbox.createTextRange();
   r.moveStart(‘character’,pos);
   r.collapse(true);
   r.select();
 }
 catch(e)
 {}
}
function selectLength(textbox,start,len)
{
 try
 {
  var r =textbox.createTextRange();
 
  r.moveEnd(‘character’,len-(textbox.value.length-start));
  r.moveStart(‘character’,start);
  
  r.select();
 }
 catch(e)
 {//alert(e.description)}
}
function insertAtCaret(textbox,text)
{
 textbox.focus();
 document.selection.createRange().text = text;
}

//页内查找

function findInPage(str)
{
 var txt, i, found,n = 0;
 if (str == “”)
 {
  return false;
 }
 txt = document.body.createTextRange();
 for (i = 0; i <= n && (found = txt.findText(str)) != false; i++)
 {
  txt.moveStart(“character”, 1);
  txt.moveEnd(“textedit”);
 }
 if (found)
 {
  txt.moveStart(“character”, -1);
  txt.findText(str);
  txt.select();
  txt.scrollIntoView();
  n++;  
 }
 else
 {
  if (n > 0)
  {
   n = 0;
   findInPage(str);
  }
  else
  {
   alert(str + “…            您要找的文字不存在。\n \n请试着输入页面中的关键字再次查找!”);
  }
 }
 return false;
}
//书
http://www.itpub.net/attachment.php?s=&postid=1894598
http://www.wrclub.net/down/listdown.aspx?id=1341
//操作EXECL
<script language=”javascript”>
function jStartExcel() {
 var xls = new ActiveXObject ( “Excel.Application” );
 xls.visible = true;
 var newBook = xls.Workbooks.Add;
 newBook.Worksheets.Add;
 newBook.Worksheets(1).Activate;
 xls.ActiveWorkBook.ActiveSheet.PageSetup.Orientation = 2;
 xls.ActiveWorkBook.ActiveSheet.PageSetup.PaperSize = 5;
 newBook.Worksheets(1).Columns(“A”).columnwidth=50;
 newBook.Worksheets(1).Columns(“A”).WrapText = true;
 newBook.Worksheets(1).Columns(“B”).columnwidth=50;
 newBook.Worksheets(1).Columns(“B”).WrapText = true;
 newBook.Worksheets(1).Range(“A1:B1000”).NumberFormat = “0”;
 newBook.Worksheets(1).Range(“A1:B1000″).HorizontalAlignment = -4131;
 newBook.Worksheets(1).Cells(1,1).Interior.ColorIndex=”15″;
 newBook.Worksheets(1).Cells(1,1).value=”First Column, First Cell”;
 newBook.Worksheets(1).Cells(2,1).value=”First Column, Second Cell”;
 newBook.Worksheets(1).Cells(1,2).value=”Second Column, First Cell”;
 newBook.Worksheets(1).Cells(2,2).value=”Second Column, Second Cell”;
 newBook.Worksheets(1).Name=”My First WorkSheet”;
}
</script>

//自定义提示条

<a href=”#” title=”这是提示”>tip</a>
<script Language=”JavaScript”>
//***********默认设置定义.*********************
tPopWait=50;//停留tWait豪秒后显示提示。
tPopShow=5000;//显示tShow豪秒后关闭提示
showPopStep=20;
popOpacity=99;
//***************内部变量定义*****************
sPop=null;
curShow=null;
tFadeOut=null;
tFadeIn=null;
tFadeWaiting=null;
document.write(“<style type=’text/css’id=’defaultPopStyle’>”);
document.write(“.cPopText {  background-color: #F8F8F5;color:#000000; border:
1px #000000 solid;font-color: font-size: 12px; padding-right: 4px; padding-left:
4px; height: 20px; padding-top: 2px; padding-bottom: 2px; filter:
Alpha(Opacity=0)}”);
document.write(“</style>”);
document.write(“<div id=’dypopLayer’ style=’position:absolute;z-index:1000;’
class=’cPopText’></div>”);

function showPopupText(){
var o=event.srcElement;
MouseX=event.x;
MouseY=event.y;
if(o.alt!=null && o.alt!=””){o.dypop=o.alt;o.alt=””};
        if(o.title!=null && o.title!=””){o.dypop=o.title;o.title=””};
if(o.dypop!=sPop) {
sPop=o.dypop;
clearTimeout(curShow);
clearTimeout(tFadeOut);
clearTimeout(tFadeIn);
clearTimeout(tFadeWaiting);
if(sPop==null || sPop==””) {
dypopLayer.innerHTML=””;
dypopLayer.style.filter=”Alpha()”;
dypopLayer.filters.Alpha.opacity=0;
}
else {
if(o.dyclass!=null) popStyle=o.dyclass 
else popStyle=”cPopText”;
curShow=setTimeout(“showIt()”,tPopWait);
}
}
}
function showIt(){
dypopLayer.className=popStyle;
dypopLayer.innerHTML=sPop;
popWidth=dypopLayer.clientWidth;
popHeight=dypopLayer.clientHeight;
if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24
else popLeftAdjust=0;
if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24
else popTopAdjust=0;
dypopLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust;
dypopLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust;
dypopLayer.style.filter=”Alpha(Opacity=0)”;
fadeOut();
}
function fadeOut(){
if(dypopLayer.filters.Alpha.opacity<popOpacity) {
dypopLayer.filters.Alpha.opacity+=showPopStep;
tFadeOut=setTimeout(“fadeOut()”,1);
}
else {
dypopLayer.filters.Alpha.opacity=popOpacity;
tFadeWaiting=setTimeout(“fadeIn()”,tPopShow);
}
}
function fadeIn(){
if(dypopLayer.filters.Alpha.opacity>0) {
dypopLayer.filters.Alpha.opacity-=1;
tFadeIn=setTimeout(“fadeIn()”,1);
}
}
document.onmouseover=showPopupText;
</script>
//插入文字
document.onclick =function(){ 
var oSource = window.event.srcElement; 
if(oSource.tagName!=”DIV”) 
return false; 
var sel = document.selection; 
if (sel!=null) { 
var rng = sel.createRange(); 
if (rng!=null) 
rng.pasteHTML(“<font color=red>插入文字</font>”); 


//netscapte下操作xml
doc = new ActiveXObject(“Msxml2.DOMDocument”);
doc = new ActiveXObject(“Microsoft.XMLDOM”)
->>
doc = (new DOMParser()).parseFromString(sXML,’text/xml’)
//判断键值
<html>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
<head>
<script language=”javascript”>
var ie  =navigator.appName==”Microsoft Internet Explorer”?true:false;
  
function keyDown(e)
{
 if(!ie)
 {
  var nkey=e.which;
  var iekey=’现在是ns浏览器’;
  var realkey=String.fromCharCode(e.which);
 }
 if(ie)
 {
  var iekey=event.keyCode;
  var nkey=’现在是ie浏览器’;
  var realkey=String.fromCharCode(event.keyCode);
  if(event.keyCode==32){realkey=’\’ 空格\”}
  if(event.keyCode==13){realkey=’\’ 回车\”}
  if(event.keyCode==27){realkey=’\’ Esc\”}
  if(event.keyCode==16){realkey=’\’ Shift\”}
  if(event.keyCode==17){realkey=’\’ Ctrl\”}
  if(event.keyCode==18){realkey=’\’ Alt\”}
 }
 alert(‘ns浏览器中键值:’+nkey+’\n’+’ie浏览器中键值:’+iekey+’\n’+’实际键为’+realkey);
}
document.onkeydown = keyDown;
</script>
</head>
<body>
//Javascript Document.
<hr>
<center>
<h3>请按任意一个键。。。。</h3>
</center>
</body>
</html>
//禁止FSO

1.注销组件
regsvr32 /u scrrun.dll
2.修改PROGID 
HKEY_CLASSES_ROOT\Scripting.FileSystemObject
Scripting.FileSystemObject
3.对于使用object的用户,修改HKEY_CLASSES_ROOT\Scripting.

//省略号
<DIV STYLE=”width: 120px; height: 50px; border: 1px solid blue;
            overflow: hidden; text-overflow:ellipsis”>
<NOBR>就是比如有一行文字,很长,表格内一行显示不下.</NOBR>
</DIV>
//检测media play版本

<IE:clientCaps ID=”oClientCaps” style=”{behavior:url(#default#clientcaps)}” />
<SCRIPT>
var flash=””;
    WMPVersion=
oClientCaps.getComponentVersion(“{22D6F312-B0F6-11D0-94AB-0080C74C7E95}”,”ComponentID”);
 
    if (WMPVersion != “”) {
    flash = “”;
    var version = WMPVersion.split(“,”);
    var i;
    for (i = 0; i < version.length; i++) {
      if (i != 0)
    flash += “.”;
      flash += version[i];
    }
     document.write(“您的Windows Media Player 版本是:”+flash+”<p>”);
  }
</SCRIPT>
//图象按比例

<script language=”JavaScript”>
<!–
//图片按比例缩放
var flag=false;
function DrawImage(ImgD){
 var image=new Image();
 var iwidth = 80;  //定义允许图片宽度
 var iheight = 80;  //定义允许图片高度
 image.src=ImgD.src;
 if(image.width>0 && image.height>0){
 flag=true;
 if(image.width/image.height>= iwidth/iheight){
  if(image.width>iwidth){  
  ImgD.width=iwidth;
  ImgD.height=(image.height*iwidth)/image.width;
  }else{
  ImgD.width=image.width;  
  ImgD.height=image.height;
  }
  ImgD.alt=image.width+”×”+image.height;
  }
 else{
  if(image.height>iheight){  
  ImgD.height=iheight;
  ImgD.width=(image.width*iheight)/image.height;  
  }else{
  ImgD.width=image.width;  
  ImgD.height=image.height;
  }
  ImgD.alt=image.width+”×”+image.height;
  }
 }

//–>
</script>
<img src=”..” onload = “DrawImage(this)”>
//细线Select

<span style=”border:1px solid #000000; position:absolute; overflow:hidden;” >
<select style=”margin:-2px;”>
<option>1111</option>
<option>11111111111111</option>
<option>111111111</option>
</select></span>

//Import

function Import() {
 for( var i=0; i<arguments.length; i++ ) {
  var file = arguments[i];
  if ( file.match(/\.js$/i)) 
   document.write(‘<script type=\”text/javascript\” src=\”‘ + file + ‘\”></sc’ +
‘ript>’);
  else
   document.write(‘<style type=\”text/css\”>@import \”‘ + file + ‘\”
;</style>’);
 }
};

//js枚举
function getComputerName()
{
 var objWMIService = GetObject(“Winmgmts:root\cimv2”);
 for(e = new Enumerator(objWMIService) ; !e.atEnd() ; e.moveNext())
 {
    var getComputer = e.item();
    return getComputer.Name;
 }
}
//条件编译

<script language=javascript>
/*@cc_on @*/
/*@if (@_win32 && @_jscript_version>5)
function window.confirm(str)
{
    execScript(“n = msgbox(‘”+ str +”‘, 257)”, “vbscript”);
    return(n == 1);
}
@end @*/
</script>
//取得innerText

<SCRIPT LANGUAGE=”JavaScript”>
<!–
 var xmlDoc = new ActiveXObject(“Msxml2.DOMDocument.4.0”);
 var currNode;
 xmlDoc.async = false;
 xmlDoc.async = false;
 xmlDoc.loadXML(“<TABLENAME>      你好你阿三    大法     司法等四             
</TABLENAME>”);
 currNode = xmlDoc.documentElement;
   
  var s = currNode.xml;
  var r = /\<([^\>\s]*?)[^\>]*?\>([^\<]*?)\<\/\1\>/
  var b = s.replace(r,”$2″);
  alert(b);
//–>
</SCRIPT>
//mergeAttributes 复制所有读/写标签属性到指定元素。
<SCRIPT>
function fnMerge(){
oSource.children[1].mergeAttributes(oSource.children[0]);
}
</SCRIPT>
<SPAN ID=oSource>
<DIV
ID=”oDiv”
ATTRIBUTE1=”true”
ATTRIBUTE2=”true”
onclick=”alert(‘click’);”
onmouseover=”this.style.color=’#0000FF’;”
onmouseout=”this.style.color=’#000000′;”
>
This is a sample <B>DIV</B> element.
</DIV>
<DIV ID=”oDiv2″>
This is another sample <B>DIV</B> element.
</DIV>
</SPAN>
<INPUT
TYPE=”button”
VALUE=”Merge Attributes”
onclick=”fnMerge()”

彻底弄懂CSS盒子模式

前言

如果你想尝试一下不用表格来排版网页,而是用CSS来排版你的网页,也就是常听的用DIV来编排你的网页结构,又或者说你想学习网页标准设计,再或者说你的上司要你改变传统的表格排版方式,提高企业竞争力,那么你一定要接触到的一个知识点就是CSS的盒子模式,这就是DIV排版的核心所在,传统的表格排版是通过大小不一的表格和表格嵌套来定位排版网页内容,改用CSS排版后,就是通过由CSS定义的大小不一的盒子和盒子嵌套来编排网页。因为用这种方式排版的网页代码简洁,更新方便,能兼容更多的浏览器,比如PDA设备也能正常浏览,所以放弃自己之前钟爱的表格排版也是值得的,更重要的是CSS排版网页的优势远远不只这些,本人在这里就不多说,自己可以去查找相关信息。

理解CSS盒子模型

什么是CSS的盒子模式呢?为什么叫它是盒子?先说说我们在网页设计中常听的属性名:内容(content)、填充(padding)、边框(border)、边界(margin), CSS盒子模式都具备这些属性。

这些属性我们可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子也具有这些属性,所以叫它盒子模式。那么内容就是盒子里装的东西;而填充就是怕盒子里装的东西(贵重的)损坏而添加的泡沫或者其它抗震的辅料;边框就是盒子本身了;至于边界则说明盒子摆放的时候的不能全部堆在一起,要留一定空隙保持通风,同时也为了方便取出嘛。在网页设计上,内容常指文字、图片等元素,但是也可以是小盒子(DIV嵌套),与现实生活中盒子不同的是,现实生活中的东西一般不能大于盒子,否则盒子会被撑坏的,而CSS盒子具有弹性,里面的东西大过盒子本身最多把它撑大,但它不会损坏的。填充只有宽度属性,可以理解为生活中盒子里的抗震辅料厚度,而边框有大小和颜色之分,我们又可以理解为生活中所见盒子的厚度以及这个盒子是用什么颜色材料做成的,边界就是该盒子与其它东西要保留多大距离。在现实生活中,假设我们在一个广场上,把不同大小和颜色的盒子,以一定的间隙和顺序摆放好,最后从广场上空往下看,看到的图形和结构就类似我们要做的网页版面设计了,如下图。

现在对CSS盒子模式理解多少了,如果还不够透彻,继续往下看,我会在后面举例,并延用盒子的概念来解释它。

转变我们的思路

传统的前台网页设计是这样进行的:根据要求,先考虑好主色调,要用什么类型的图片,用什么字体、颜色等等,然后再用Photoshop这类软件自由的画出来,最后再切成小图,再不自由的通过设计HTML生成页面,改用CSS排版后,我们要转变这个思想,此时我们主要考虑的是页面内容的语义和结构,因为一个强CSS控制的网页,等做好网页后,你还可以轻松的调你想要的网页风格,况且CSS排版的另外一个目的是让代码易读,区块分明,强化代码重用,所以结构很重要。如果你想说我的网页设计的很复杂,到后来能不能实现那样的效果?我要告诉你的是,如果用CSS实现不了的效果,一般用表格也是很难实现的,因为CSS的控制能力实在是太强大了,顺便说一点的是用CSS排版有一个很实用的好处是,如果你是接单做网站的,如果你用了CSS排版网页,做到后来客户有什么不满意,特别是色调的话,那么改起来就相当容易,甚至你还可以定制几种风格的CSS文件供客户选择,又或者写一个程序实现动态调用,让网站具有动态改变风格的功能。

实现结构与表现分离

在真正开始布局实践之前,再来认识一件事——结构和表现相分离,这也用CSS布局的特色所在,结构与表现分离后,代码才简洁,更新才方便,这不正是我们学习CSS的目的所在吗?举个例来说P是结构化标签,有P标签的地方表示这是一个段落区块,margin是表现属性,我要让一个段落右缩进2字高,有些人会想到加空格,然后不断地加空格,但现在可以给P标签指定一个CSS样式:P {text-indent: 2em;},这样结果body内容部分就如下,这没有外加任何表现控制的标签:

<p>加进天涯社区有一段时间了,但一直没有时间写点东西,今天写了一篇有关CSS布局的文章,并力求通过一种通俗的语言来说明知识点,还配以实例和图片,相信对初学CSS布局的人会带来一定的帮助。</p>

如果还要对这个段落加上字体、字号、背景、行距等修饰,直接把对应的CSS加进P样式里就行了,不用像这样来写了:

<p><font color=”#FF0000″ face=”宋体”>段落内容</font></p>

这个是结构和表现混合一起写的,如果很多段落有统一结构和表现的话,再这样累加写下去代码就繁冗了。

再直接列一段代码加深理解结构和表现相分离:

用CSS排版

<style type=”text/css”>
<!–
#photoList img{
  height:80;
  width:100;
  margin:5px auto;
}
–>
</style> <div id=”photoList”>
<img src=”01.jpg” />
<img src=”02.jpg” />
<img src=”03.jpg” />
<img src=”04.jpg” />
<img src=”05.jpg” />
</div>

不用CSS排版

<img src=”01.jpg” width=”100″ height=”80″ align=”middle” />
<img src=”02.jpg” width=”100″ height=”80″ align=”middle” />
<img src=”03.jpg” width=”100″ height=”80″ align=”middle” />
<img src=”04.jpg” width=”100″ height=”80″ align=”middle” />
<img src=”05.jpg” width=”100″ height=”80″ align=”middle” />

第一种方法是结构表现相分离,内容部分代码简单吧,如果还有更多的图片列表的话,那么第一种CSS布局方法就更有优势,我打个比喻你好理解:我在BODY向你介绍一个人,我只对你说他是一个人,至于他是一个什么样的人,有多高,是男是女,你去CSS那里查下就知道。这样我在BODY的工作就简单了,也就是说BODY的代码就简单了。如果BODY有一个团队人在那里,我在CSS记录一项就行了,这有点像Flash软件里的元件和实例的概念,不同的实例共享同一个元件,这样动画文件就不大了,把这种想法移到CSS网页设计中,就是代码不复杂,网页文件体积小能较快被客户端下载了。

演示地址:css1.html
用CSS排版减小网页文件体积

像上面我做的那个版面,一共分为四个区块,每个区块的框架是一样的,这个框架就是用CSS写出来的,样式写一次,就可以被无数次调用了(用class调用,而不是ID),只要改变其中的文字内容就可以生成风格统一的众多板块了,它的样式和结构代码是(请不要直接复制生成网页,把下面代码分别粘贴到网页中它们应在的位置):

<style type=”text/css”>
<!–
* {margin:0px; padding:0px;}
body {
font-size: 12px;
margin: 0px auto;
height: auto;
width: 805px;
}
.mainBox {
border: 1px dashed #0099CC;
margin: 3px;
padding: 0px;
float: left;
height: 300px;
width: 192px;
}
.mainBox h3 {
float: left;
height: 20px;
width: 179px;
color: #FFFFFF;
padding: 6px 3px 3px 10px;
background-color: #0099CC;
font-size: 16px;
}
.mainBox p {
line-height: 1.5em;
text-indent: 2em;
margin: 35px 5px 5px 5px;
}
–>
</style>
<div class=”mainBox”>
<h3>前言</h3>
<p>正文内容</p>
</div>
<div class=”mainBox”>
<h3>CSS盒子模式</h3>
<p>正文内容 </p>
</div>
<div class=”mainBox”>
<h3>转变思想</h3>
<p>正文内容 </p>
</div>
<div class=”mainBox”>
<h3>熟悉步骤</h3>
<p>正文内容 </p>
</div>

 

 

熟悉工作流程

在真正开始工作之前我们脑海中要形成这样一种思想:表格是什么我不知道,在内容部分我不能让它再出现表现控制标签,如:font、color、height、width、align等标签不能再出现,(简单说工作前先洗脑,忘掉以前的一惯做法,去接受和使用全新的方法),我不是单纯的用DIV来实现排版的嵌套,DIV是块级元素,而像P也是块级元素,例如要分出几个文字内容块,不是一定要用DIV才叫DIV排版,不是“<div>文字块一</div><div>文字块二</div><div>文字块三</div>”,而用“<p>文字块一</p><p>文字块二</p><p>文字块三</p>”更合适。

用DIV+CSS设计思路是这样的: 1.用div来定义语义结构;2.然后用CSS来美化网页,如加入背景、线条边框、对齐属性等;3.最后在这个CSS定义的盒子内加上内容,如文字、图片等(没有表现属性的标签),下面大家跟我一起来做一个实例加深对这个步骤的理解。先看结果图:


CSS排版结果图

演示地址:css2.html

用div来定义语义结构

现在我要给大家演示的是一个典型的版面分栏结构,即页头、导航栏、内容、版权(如下图)


典型版面分栏结构

其结构代码如下:

<div id=”header”></div>
<div id=”nav”></div>
<div id=”content”></div>
<div id=”footer”></div>

上面我们定义了四个盒子,按照我们想要的结果是,我们要让这些盒子等宽,并从下到下整齐排列,然后在整个页面中居中对齐,为了方便控制,我们再把这四个盒子装进一个更大的盒子,这个盒子就是BODY,这样代码就变成:

<body>
<div id=”header”></div>
<div id=”nav”></div>
<div id=”content”></div>
<div id=”footer”></div>
</body>

最外边的大盒子(装着小盒子的大盒子)我们要让它在页面居中,并重定义其宽度为760像素,同时加上边框,那么它的样式是:

body {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
margin: 0px auto;
height: auto;
width: 760px;
border: 1px solid #006633;
}

页头为了简单起见,我们这里只要让它整个区块应用一幅背景图就行了,并在其下边界设计定一定间隙,目的是让页头的图像不要和下面要做的导航栏连在一起,这样也是为了美观。其样式代码为:

#header {
height: 100px;
width: 760px;
background-image: url(headPic.gif);
background-repeat: no-repeat;
margin:0px 0px 3px 0px;
}

导航栏我做成像一个个小按钮,鼠标移上去会改变按钮背景色和字体色,那么这些小小的按钮我们又可以理解为小盒子,如此一来这是一个盒子嵌套问题了,样式代码如下:

#nav {
height: 25px;
width: 760px;
font-size: 14px;
list-style-type: none;
}
#nav li {
float:left;
}
#nav li a{
color:#000000;
text-decoration:none;
padding-top:4px;
display:block;
width:97px;
height:22px;
text-align:center;
background-color: #009966;
margin-left:2px;
}
#nav li a:hover{
background-color:#006633;
color:#FFFFFF;
}

内容部分主要放入文章内容,有标题和段落,标题加粗,为了规范化,我用H标签,段落要自动实现首行缩进2个字,同时所有内容看起来要和外层大盒子边框有一定距离,这里用填充。内容区块样式代码为:

#content {
height:auto;
width: 740px;
line-height: 1.5em;
padding: 10px;
}
#content p {
text-indent: 2em;
}
#content h3 {
font-size: 16px;
margin: 10px;

版权栏,给它加个背景,与页头相映,里面文字要自动居中对齐,有多行内容时,行间距合适,这里的链接样式也可以单独指定,我这里就不做了。其样式代码如下:

#footer {
height: 50px;
width: 740px;
line-height: 2em;
text-align: center;
background-color: #009966;
padding: 10px;
}

最后回到样式开头大家会看到这样的样式代码:

* {
margin: 0px;
padding: 0px;
}

这是用了通配符初始化各标签边界和填充,(因为有部分标签默认会有一定的边界,如Form标签)那么接下来就不用对每个标签再加以这样的控制,这可以在一定程度上简化代码。最终完成全部样式代码是这样的:

<style type=”text/css”>
<!–
* {
margin: 0px;
padding: 0px;
}
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
margin: 0px auto;
height: auto;
width: 760px;
border: 1px solid #006633;
}
#header {
height: 100px;
width: 760px;
background-image: url(headPic.gif);
background-repeat: no-repeat;
margin:0px 0px 3px 0px;
}
#nav {
height: 25px;
width: 760px;
font-size: 14px;
list-style-type: none;
}
#nav li {
float:left;
}
#nav li a{
color:#000000;
text-decoration:none;
padding-top:4px;
display:block;
width:97px;
height:22px;
text-align:center;
background-color: #009966;
margin-left:2px;
}
#nav li a:hover{
background-color:#006633;
color:#FFFFFF;
}
#content {
height:auto;
width: 740px;
line-height: 1.5em;
padding: 10px;
}
#content p {
text-indent: 2em;
}
#content h3 {
font-size: 16px;
margin: 10px;
}
#footer {
height: 50px;
width: 740px;
line-height: 2em;
text-align: center;
background-color: #009966;
padding: 10px;
}
–>
</style>

结构代码是这样的:

<body>
<div id=”header”></div>
<ul id=”nav”>
<li><a href=”#”>首 页</a></li>
<li><a href=”#”>文 章</a></li>
<li><a href=”#”>相册</a></li>
<li><a href=”#”>Blog</a></li>
<li><a href=”#”>论 坛</a></li>
<li><a href=”#”>帮助</a></li>
</ul>
<div id=”content”>
<h3>前言</h3>
<p>第一段内容</p>
<h3>理解CSS盒子模式</h3>
<p>第二段内容</p>
</div>
<div id=”footer”>
<p>关于华升 | 广告服务 | 华升招聘 | 客服中心 | Q Q留言 | 网站管理 | 会员登录 | 购物车</p><p>Copyright &copy;2006 – 2008 Tang Guohui. All Rights Reserved</p>
</div>
</body>

好了,此文到此结束,更多内容,如:CSS中的盒子宽度计算,浏览器兼容问题,XHTML规范化写法等请大家去参考其它资料。如果觉得此文还可以,看过之后记得跟帖,你的鼓励是我不断出新文章的动力^-^

本文完全为个人原创作品,转摘请注明作者,作者:唐国辉。感谢经典论坛网页标准化专栏斑竹blankzheng指点优化几处

CSS hack:区分IE6,IE7,firefox

区别IE6FF

       background:orange;*background:blue;

 

区别IE6IE7
       background:green !important;background:blue;

 

区别IE7FF
       background:orange*background:green;

 

区别FFIE7IE6
       background:orange;*background:green !important;*background:blue;

 

注:IE都能识别*;标准浏览器(如FF)不能识别*;
IE6能识别*,但不能识别 !important,
IE7能识别*,也能识别!important;
FF不能识别*,但能识别!important;

 


IE6 IE7 FF
* ×
!important ×


另外再补充一个,下划线”_“,
IE6支持下划线,IE7和firefox均不支持下划线。(推荐)

于是大家还可以这样来区分IE6IE7firefox
: background:orange;*background:green;_background:blue;

注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。