CSS and HTML
  1. -webkit-perspectiveAvailable in iPhone OS 2.0 and later.
  2. contenteditable="true"并不能作用于子元素。
  3. contenteditable="true"的元素将获得:focus伪类,但不会获得focus事件。
  4. button元素也有type属性,存在resetsubmitbutton三种。
  5. <a>标签定了大于内容的宽高,并且没有背景时,内容以外的区域将不可点击,这时可以为<a>增加一个不可见的背景(如一个一像素的点),而更好的方案是:background:url(about:blank) no-repeat 0 0;,再不行可以试一下_zoom:1;
  6. ie6\ie7下,img标签设置width=""或者height=""后,图片将不能显示。
  7. flash需要添加这句才能被覆盖:<param name="wmode" value="opaque">demo
  8. hsl色彩模式也可以通过增加一个alpha参数来表示半透明效果,如color:hsla(240,100%,50%, 0.4);
  9. webkit下无法在伪类上运用通用兄弟元素选择器~,如input:focus ~ div{display:block;}。ie9、firefox、opera正常。
  10. 当元素内不包含任何内容时,使用3d transformrotate属性,会导致transform-origin的位置不断改变。
  11. <meta http-equiv="X-UA-Compatible" content="IE=Edge">可以通过在响应头中增加X-Ua-Compatible:IE=Edge来取代。
  12. ::-webkit-slider-thumb自定义range控件的样式
  13. chrome下设置了transform 3D属性后,将导致各种各样奇怪的样式渲染问题,比如text-shadow属性只能显示灰度颜色了,而在android上干脆不显示阴影效果了,解决方法是设置文字阴影的size在1px以上。
  14. android上清除content生成的内容,不能使用content:none;,可以通过隐藏伪元素来解决,比如:::after{display:none;}
Javascript
  1. geko及opera下不能对文件上传域使用click()方法。
  2. 主动使用formsubmit()事件时,onsubmit事件处理程序不会促发。2
  3. Webkit下,设置iframe的高度大于其包含页面的高度时,被包含页面的htmlbody高度自动扩展到与iframe一样的高度。产生的问题:不能通过脚本获取页面内容的实际高度。
  4. 用脚本阻止链接的默认事件后,CSS里:active伪类将不再生效。
  5. 当一个变量a未声明时,通过if(a){...}去判断会报错。可以要用if(typeof a === "undefined"){...}去判断。
  6. 不能打印(不能输出内容)的功能按键,如Backspace、Enter、Escape、箭头方向键、Page Up、Page Down以及F1至F12,它们会产生keydownkeyup事件,但不会产生keypress事件。Firefox除外。
  7. 跨页面情况下,新建一个Dom节点,然后插入,在IE下,该新建的节点必须是在其插入的页面的document下新建的。如要往window.opener插节点,必须这样新建节点:window.opener.document.createElement("p")
  8. script标签的src属性不能通过js动态改变,不会重新请求。
  9. 除safari外的浏览器在异步完成后,可以通过提交表单的方式新开一个页面。webkit下,异步完成后,直接window.open都是无效的。webkit浏览器会阻止setIntervalsetTimeout中的window.open。所以通过setInterval、嵌套setTimeout侦测异步返回结果,然后新开窗口是不现实的。
  10. 处理类似表格这样的display值不是noneblock的元素的显示隐藏时(对于display属性,各个浏览器不太一样,比如IEs对于表格元素也使用tr{display:block;},而标准浏览器使用tr{display:table-row;}),可以通过node.style.display = "";来实现,使浏览器用默认样式处理。
  11. Js下用Unicode标识字体,需要在“\”后加“u”,比如font-family:\5B8B\4F53,Serif;要写成font-family:\u5B8B\u4F53,Serif;
  12. 错误嵌套时,使用innerHTML(如行内元素中插入块级元素),将导致IE出现Unknown runtime error的脚本错误。
  13. window.getComputedStyle去取背景色时,如果未定义背景色(即为透明背景),此时Firefox、opera返回transparent而chrome、safari返回rgba(0, 0, 0, 0)
  14. 间接改变表单元素的值,不会促发该元素的change事件。
  15. 字符串的replace方法的第二个参数支持函数,如:"zhouqi2".replace(/\d/g,function(){return "cf";})
  16. mozilla及opera的css私有属性,通过js赋值首字母需要大写,如object.style.MozTransform = ""object.style.OTransform = "";而webkit遵循js的驼峰命名规则,如object.style.webkitTransform = ""
  17. webkit内核浏览器下使用object.select()(object包括text\password\file三个表单元素)存在bug,表现为text becomes selected onMouseDown and de-selected onMouseUp.Demo
  18. object.getBoundingClientRect().leftobject.getBoundingClientRect().top在opera下的某些情况,计算结果会包含滚动条的偏移量;在某些情况下会是真实情况的2倍。
  19. if(0 == ""){} return true
  20. keydown事件在opera下不会持续促发。
  21. getComputedStyle方法无法获取borderborderToplistStyle等组合属性的值。
  22. flie文件域表单是只读的,无法通过脚本改变其值。
  23. window.onbeforeunload = function(){ return "Are you sure to leavel this page?"; } 编辑的内容未保存时,提示用户是否确定离开。opera(<=10.63)不支持onbeforeunload事件。搜狗浏览器(2.2.0.1723)webkit内核情况下,该事件存在,但无法弹出提示。
  24. 判断是否支持placeholder:function isSupportPlaceholder() {var i = document.createElement('input'); return 'placeholder' in i;}
  25. 判断是否支持html5的某些表单:function isSupport(type) {var i = document.createElement('input'); i.setAttribute("type", type); return i.type !== "text";}
  26. document.charset,firefox需要使用document.characterSet,可以获取当前页面的编码方式。当页面未声明charset时,将返回浏览器的自动判断出的编码。
  27. Mac下是否按住command键,需要用e.metaKey来判断,是返回true,command键对应的keyCode91
  28. document.createDocumentFragment()在文档之外创建一个文档片段,然后再把它附加到原始列表中,可减少reflow。
  29. 价格去除末尾的0:parseFloat((10.2 - 8).toFixed(2))
  30. 非捕获子模式 - /(?:\w)/中的?:表示该分组不需要捕获。
  31. 链接用于提交表单时,href不能用伪协议javascript:void(0)详细看这里
  32. var test = someObject.methodTest;test();这时候this将指向window
浏览器
  1. 在地址栏按回车,IE不会重新向服务器发起请求。
  2. <input type="reset" value="重置">按钮不能清除非用户输入的内容,例如程序或程序员填入表单元素的value属性的内容。
  3. 表单元素disabled后,后台无法获取值。
  4. form的method属性设置为get时,无法将action里的查询字符串带到服务端,将method改成post就可以。
  5. <img src=""/><img src/>这两种图片src属性的写法,会导致在firefox、chrome、ie等浏览器中,请求当前页面的url。
PHP
  1. 数组中,一旦选择了索引的方式后,就必须使用相应的方法来索引值,如$newArray = array("name" => "zhouqi"),不能使用$newArray[0]来索引。但两种索引方式可以混用。
  2. 在双引号中,可以输出变量及转义符,而单引号中不会。
  3. \n换行符,浏览器只会显示一个空格,但在查看源代码中可以看到换行效果。
  4. 当数组的索引值是递增时,定义数组可以省略为$user[]="zhouqi";$user[]=23;
  5. iconv("UTF-8","GB2312//IGNORE",$data),IGNORE用与忽略编码转换中的错误。
  6. 服务端支持跨域需要增加如下头信息,<?php header("Access-Control-Allow-Headers: x-requested-with"); header("Access-Control-Allow-Origin: *");?>Jquery、YUI等框架在发起异步请求的时候都会在请求头中增加:headers[ "X-Requested-With" ] = "XMLHttpRequest";,如果在服务端未增加如上第一个响应头,将无法跨域,chrome下提示:Request header field x-requested-with is not allowed by Access-Control-Allow-Headers.
Photoshop
  1. 每个调整图层都会自动生成一个通道蒙板。
其它
  1. ANSI指当地编码,比如在大陆它指GB2312,在台湾它指GBK(Win中记事本保存文件的时候的默认选项就是它)。
  2. 206 Partial Content,服务器已经接受请求GET请求资源的部分。请求必须包含一个Range头信息以指示获取范围可能必须包含If-Range头信息以成立请求条件。
  3. trunk是主分支,是日常开发进行的地方。
  4. branches是分支,一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中。又比如为不同用户客制化的版本,也可以放在分支中进行开发。
  5. tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档。