IE css hack汇总

摘要: 汇总下IE各版本的css hackhack示例IE6(S)IE6(Q)IE7(S)IE7(Q)IE8(S)IE8(Q)IE9(S)IE9(Q)**colorYYYYNYNY++colorYYYYNYNY--colorYYNNNNNN__colorYYNYNYNY##colorYYYYNYNY\0color:red\0NNNNYNYN\9\0color:red\9\0NNNNNNYN标准模式中:1,减号(-)是IE6专有hack2,反斜杠零(\0)是IE8/9的hack3,\9\0是IE9/10的hack 阅读全文
posted @ 2011-03-08 09:18 snandy 阅读(4726) 评论(9) 推荐(6) 编辑

获取事件对象的全家

摘要: 事件对象 的获取很简单,很久前我们就知道IE中事件对象是作为全局对象( window.event )存在的,Firefox中则是做为句柄( handler )的第一个参数传入内的。所以一行代码就可以搞定var evt = window.event || arguments[0]; 下面分四种添加事件的方式讨论,你也许会看到以前没有看到过的获取方式。1,第一种添加事件的方式,直接在html的属性中写JS代码Div1 Element大概这是上世纪90年代的写法,那时候直接把js代码写在网页中很普遍,也许那时候的js并不太重要,只是用来做做验证或一些花哨的效果而已。如何在这种添加事件方式下获取到事. 阅读全文
posted @ 2011-03-07 21:22 snandy 阅读(7126) 评论(11) 推荐(11) 编辑

IE6双空白边bug

摘要: 在IE5.5,6下,如果一个元素向左浮动(float:left),且添加了向左空白边(margin-left:10px)。那么会自动的加一倍变成20px。如下html:在IE5.5,6下测试会发现marginLeft变成了20px<style type="text/css">#div2{ margin:0 0 0 10px; float:left; width:300px; height:50px; border:1px solid gray;}</style><div style="border:1px solid red;&quo 阅读全文
posted @ 2011-03-07 20:25 snandy 阅读(678) 评论(2) 推荐(0) 编辑

JavaScript的写类方式(5)

摘要: 这篇我们看看各个JS库的写类方式,这也是写类系列的最后一篇。 1,Prototype的写类方式 Prototype中使用Class.create方法,如下 initialize完成对象的初始化(相当于构造函数,必不可少),方法依次往下写即可。有个问题,但是p.constructor == Perso 阅读全文
posted @ 2011-03-07 16:16 snandy 阅读(5197) 评论(10) 推荐(8) 编辑

JavaScript的写类方式(4)

摘要: 工具函数如下 定义一个Person类 创建对象看看 使用该工具函数写类需注意,this.init方法必不可少。使用过Prototype库的同学会知道Class.create后的initialize方法也是必不可少的。 因为没考虑继承,第二个参数superClass使用空字符串,即默认继承于Objec 阅读全文
posted @ 2011-03-07 09:09 snandy 阅读(5009) 评论(5) 推荐(3) 编辑

JavaScript的写类方式(3)

摘要: 续上篇, 构造函数+原型 组装一个类;同一构造函数可以定义出多个类型 与上一篇方式类似,仍然用构造函数,原型对象,定义两个类。 与上一篇不同的是,虽然Man和Woman都是用Person,proto组装的。但Man却不等于Woman。即同一个构造函数(Person)可以定义出不同的类。 相关: Ja 阅读全文
posted @ 2011-03-06 17:52 snandy 阅读(5171) 评论(16) 推荐(3) 编辑

JavaScript的写类方式(2)

摘要: 这篇开始会记录一些写类的工具函数,通过上篇我们知道本质上都是 构造函数+原型。理解了它碰到各式各样的写类方式就不惧怕了。 构造函数 + 原型 直接组装一个类;同一构造函数将组装出同一类型 用构造函数来生成类实例的属性(字段),原型对象用来生成类实例的方法。 这时候已经得到了两个类Man,Woman。 阅读全文
posted @ 2011-03-06 14:00 snandy 阅读(6498) 评论(18) 推荐(5) 编辑

JavaScript的写类方式(1)

摘要: 从这篇起,会由浅到深的分析JS OO之写类方式,大概会有5-8篇。后面陆续会分析流行库(框架)的写类方式。 一些写类工具函数或框架的写类方式本质上都是 构造函数+原型。只有理解这一点才能真正明白如何用JavaScript写出面向对象的代码,或者说组织代码的方式使用面向对象方式。当然用JS也可写出函数 阅读全文
posted @ 2011-03-06 12:36 snandy 阅读(19607) 评论(41) 推荐(25) 编辑

JavaScript中具名函数的多种调用方式(2)

摘要: 以函数中有无this来讨论。没有this时返回一个空的对象{},有this时返回一个非空对象。下面是一个没有this的函数// 返回值是基本类型function fun() { return "jack";}var c = new fun();for (var atr in c) { alert(atr);} alert(c); //[object Object]返回值c不是"jack", 从for in执行后没有输出任何属性可以看出 c 是一个空的对象{}。再看看有this的函数,函数中有this实际上是在写一个类。但由于js的灵活性,造成了许多诡异的 阅读全文
posted @ 2011-03-05 16:15 snandy 阅读(2756) 评论(4) 推荐(4) 编辑

JavaScript中具名函数的多种调用方式(1)

摘要: 前面有一篇提到了 匿名函数的多种调用方式。这篇看看具名函数的多种调用方式。1、() 平时最常用的就是()运算符来调用/执行一个函数// 无参函数fun1function fun1() { alert('我被调用了');}fun1();// 有参函数fun2function fun2(param) { alert(param);}fun2('我被调用了');ECMAScript3后加入给Function加入了call和apply后,就有了下面两种2、call// 无参函数fun1function fun1() { alert('我被调用了');}f 阅读全文
posted @ 2011-03-05 14:22 snandy 阅读(5726) 评论(4) 推荐(2) 编辑

HTML P不能包含块级元素(包括自身)

摘要: abcc项目中碰到的,在一个表单中用P包含一个label和div,从Firebug中看html结构div却跑到P外面去了。甚是诧异,原来P元素是不能包含块级元素(包括P自身)的。The P element represents a paragraph. It cannot contain block-level elements (including P itself).以下是html片段,P包含了一个行内及块级元素,没有一个浏览器是按代码的结构去渲染的。<p> <label for="username">用戶名:</label> < 阅读全文
posted @ 2011-03-05 08:20 snandy 阅读(6229) 评论(18) 推荐(4) 编辑

存储绑定/生存期

摘要: 上一篇提到了 绑定 中的 类型绑定 。这篇说说存储绑定,程序设计语言的一种根本特征取决于这种语言的变量存储绑定的设计方式。变量名 与 存储单元 之间的关联的这个过程称为 存储绑定 ,或称为 存储空间分配。变量名与存储单元的解除绑定的这个过程称为 存储空间解除绑定 。变量的 生存期 指该变量名被绑定于... 阅读全文
posted @ 2011-03-04 17:41 snandy 阅读(1920) 评论(3) 推荐(1) 编辑

类型绑定

摘要: 在程序中引用一个变量前,变量名 必须被 绑定 到一种数据类型上。如 名字 abc 得知道它是语言中的基本类型(整型数字、浮点数字、布尔、字符串)或对象类型(内置类、自定义类)。根据 绑定时间 的早晚分为静态类型绑定和动态类型绑定。 一、静态类型绑定显示声明和隐式声明(JS等除外)都产生对类型的静态绑定。 二、动态类型绑定动态类型绑定时,变量的类型不是由声明语句来说明的,也不是像Fortain中通过名字的拼法来确定。而是通过赋值语句给变量赋值时,变量才与类型绑定的。与静态类型绑定不同,动态类型绑定给程序设计带来了极大的灵活性。如使用动态类型绑定的语言很容易写出一个通用程序。如求两个数的和// J 阅读全文
posted @ 2011-03-04 14:52 snandy 阅读(2216) 评论(0) 推荐(1) 编辑

变量的显示/隐式声明

摘要: 显示声明 是程序中的一条说明语句,它列出一批变量名并指明这些变量的类型。C、C++、Java中// 显示声明 变量count,类型为int,占用空间大小各语言可能有所不同int count;JavaScript中// 显示声明 变量count,但不知其类型,也不知其占用空间大小var count;隐式声明 指通过某种默认协定的方法将变量名与类型绑定。如在Fortain中,一个以字母I、J、K、L、M或者N(或其对应小写)开始,它们被隐式的声明为Integer类型。否则为Real类型。Javascript中// 赋值语句其实隐式的声明了变量count,类型为数字,占用8个字节(64位浮点格式)/ 阅读全文
posted @ 2011-03-04 12:14 snandy 阅读(8392) 评论(0) 推荐(1) 编辑

JavaScript奇技淫巧之遍历数组

摘要: 正常的for循环就不提了,直接进入正题。如下://示例1for(var i=0,a;a=["jack","tom","lily","andy"][i++];){ console.log(a);}//示例2var ary = ["jack","tom","lily","andy"];for(var i=0,a;a=ary[i++];){ console.log(a);}从Firebug控制台能看到依次输出jack ,tom ,lily , 阅读全文
posted @ 2011-03-04 08:36 snandy 阅读(32214) 评论(9) 推荐(9) 编辑

判断JS对象是否拥有某属性

摘要: 三种种方式,其中 in 可以检测到原型继承过来的属性 1,in 运算符 var obj = {name:'jack'}; alert('name' in obj); // --> true alert('toString' in obj); // --> true 可看到无论是name,还是原形链上 阅读全文
posted @ 2011-03-04 06:59 snandy 阅读(79190) 评论(3) 推荐(4) 编辑

for in的缺陷

摘要: for in 语句用来列举对象的属性(成员),如下var obj = { name:"jack", getName:function(){return this.name}};//输出name,getName for(var atr in obj) { alert(atr);}注意了吗,没有输出obj的toString,valueOf等内置属性(或称内置成员,隐藏属性和预定义属性)。即for in用来列举对象的显示成员(自定义成员)。如果重写了内置属性呢,下面就重写obj的toStringvar obj = {name:"jack", getName:f 阅读全文
posted @ 2011-03-03 17:29 snandy 阅读(8861) 评论(4) 推荐(3) 编辑

XMLHttpRequest与script对比

摘要: script不受Web浏览器跨域安全限制的束缚,即能实现跨域访问。这是它的最大优点。另外一点需要注意的是不同浏览器对script的触发事件不同,即回调函数要写在这些函数之中,且只支持异步调用IE下:加载完成后触发"onreadystatechange"事件firefox下:加载完成后触发"onload"事件,以下是同xmlHttpRequest的比较。 阅读全文
posted @ 2011-03-03 15:48 snandy 阅读(1282) 评论(7) 推荐(1) 编辑

配置myeclipse代理上网

摘要: 很多公司是用代理服务器来上网。浏览器,qq,msn等都要设置代理。每到一个地方都是一个网络配置,导致很多问题,其中就是在代理环境下eclipse的需要更新的时候出问题,以下就是解决方法:window-->preferences-->general-->network connections 选中 manual proxy configuration:填入http proxy , port代理需要用帐号和密码就需要选中 Enable proxy authentication,然后填上 user name 及password 阅读全文
posted @ 2011-03-03 15:10 snandy 阅读(11458) 评论(0) 推荐(2) 编辑

用递归实现十进制数转换N进制

摘要: 最近回顾了下数据结构及算法,以下是用java和js实现的十进制数转换N进制。Java实现/** * baseString 递归调用 * @param num 十进制数 * @param base 要转换成的进制数*/public static String baseString(int num,int base) { String str = "", digit = "0123456789abcdef"; if(num == 0){ return ""; }else { str = baseString(num / base,base 阅读全文
posted @ 2011-03-03 11:27 snandy 阅读(3543) 评论(0) 推荐(0) 编辑

Java方法传值和传引用

摘要: 某门户网站的一道笔试题public class Test { public static void stringUpd(String str) { str = str.replace("j", "l"); System.out.println(str); } public static void stringBufferUpd(StringBuffer bf) { bf.append("c"); System.out.println(bf); } public static void main(String[] args) { /** 阅读全文
posted @ 2011-03-03 11:23 snandy 阅读(1138) 评论(1) 推荐(0) 编辑

IE6下著名的z-index bug

摘要: abcc项目实现这样一个功能:点击“上载查询”,弹出一个绝对定位的div(类似qq文件中转站的“上传文件”按钮),里面有上传按钮等,点击后div在最上层。即z-index为最大。在firefox下表现良好,在IE6下无论如何也盖不住select。墨墨说是IE下一个著名的bug,解决方法用一个iframe包住select。以下是一个测试的静态html,为bug重现及及解决方法。<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title he 阅读全文
posted @ 2011-03-03 08:31 snandy 阅读(3659) 评论(13) 推荐(3) 编辑

Javascript中克隆一个数组

摘要: 08年一家公司JS面试题,职位是javascript工程师(赴google)面试官问我如何克隆一个数组,当时想了下js的Object没有clone方法,java的Object有。那怎么得到一个新数组呢? 我当时回答:用一个loop将源数组元素依次push到新数组中。这是最简单的方法,但显然不是面试官想要的答案。最后告知我:利用Array的slice方法。示例如下:var ary = [1,2,3];//源数组var ary2 = ary.slice(0);//克隆一个新数组console.log(ary2);/* 改变ary2,不会影响到ary,说明的确是两个数组而非引用 * 如果是两个引用, 阅读全文
posted @ 2011-03-03 08:22 snandy 阅读(2351) 评论(3) 推荐(1) 编辑

网页截图软件

摘要: 有时候网页很长,出现了滚动条。这时候如果要看这个网页的效果用windows提供的“印屏幕PRScrn”键就满足不了了。下面是自己使用过的截图软件。IE下测试css等可以用马桶浏览器( 傲游Maxthon ) firefox3下的插件比较多,Fireshot就不错。以下是安装步骤1、打开firefox3浏览器,工具 > 附加组件,输入Fireshot搜索2、下一步下一步的即可3、提示重启firefox3,重启后安装成功嗯,看看如何使用4、重启firefox3后会发现工具栏右侧多了一个红色背景的大S标志,这个就是Fireshot5、点击旁边的小三角,出现弹出菜单,选择capture enti 阅读全文
posted @ 2011-03-03 08:20 snandy 阅读(574) 评论(0) 推荐(0) 编辑

JavaScript1.6数组新特性和JQuery的几个工具方法

摘要: JavaScript 1.6 引入了几个新的Array 方法,具体的介绍见:New in JavaScript 1.6 。这些方法已经被写进了ECMA262 V5。现代浏览器(IE9/Firefox/Safari/Chrome/Opera)都已经支持,但IE6/7/8不支持。jquery的工具方法中提供了类似的功能。1、Array.forEach()和jquery的$().each()。在数组中的每个项上运行一个函数。类似java5 增强的for循环。var ary = [2,4,6,8];// js1.6 Array.forEach方法ary.forEach(function(i){aler 阅读全文
posted @ 2011-03-02 16:44 snandy 阅读(6288) 评论(2) 推荐(2) 编辑