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