☆ js调试工具推荐 firefox 的 firebug 插件
能够给js设置断点执行
能够运行时修改css样式
查看dom模型等
☆ IE8 自带的developer bar也很不错
☆ 打开firefox所有js警告:
在地址栏里录入:about:config
双击,设置 javascript option restict 打开为true 能够看到很多警告,利于纠错
☆ IE -> firefox javascript类
△ document.all("id") -> document.getElementById("id")
并且控件尽量用id,而不是name标识
提示:
如果控件只有name,没有id, 用getElementById时:
IE:也可以找到对象
FF:返回NULL
△ 获得form里某个元素的方法
elForm.elements['name'];
△ 取集合元素时, ie支持 [],() 2种写法, 但是ff仅支持[],如:
table.rows(5).cells(0)
改为:
table.rows[5].cells[0]
△ 判断对象是否是object的方法应该为
if( typeof 对象变量 == "object")
而不是 if(对象变量 == "[object]")
△ eval(对象名称) -> document.getElementById
FF支持eval函数
△ 通过id直接调用对象
对象id.value = ""
改为
document.getElementById("name").value = ""
△ obj.insertAdjacentElement("beforeBegin",objText);
改为用
obj.parentNode.insertBefore(objText,obj);
△ FF的createElement不支持HTML代码
用document.write(esHTML);
或者创建元素后再设置属性, 对input元素来说,需要先设置type再加入到dom里
var ōbj = createElement("input");
obj.type = "checkbox";
var obj2 = document.getElementById("id2");
obj2.parentNode.insertBefore(obj,obj2);
如果是直接插入html代码,则可以考虑用
createContextualFragment
△ innerText -> textContent
△ 对象名称中的$不能识别, 建议改为_
ōbjName = "t1$spin"
改为
ōbjName = "t1_spin"
△ FF里设置Attribute为某个对象,然后再取出来,这时候对象的属性都丢失了?
objText.setAttribute("obj",obj);
alert(obj.id) //正确的名字
obj = objText.getAttribute("obj");
alert(obj.id) //null
在IE下没有问题, FF对setAttribute来说,第2个参数都是字符串型的!!!
所以如果第2个参数是对象时,相当于调用对象的 toString() 方法了
解决的方法是用下面的调用方式:
objText.dropdown_select = obj;
ōbj = objText.dropdown_select
△ className -> class
FF下用class代替IE下的className
由于class是关键字, 所以需要用 setAttribute/getAttribute才行
setAttribute("class","css样式名称");
△ 在html里定义的属性,必须用getAttribute才行
<td id="TD1" isOBJ="true">
获取时:
document.getElementByID("TD1").isOBJ 总返回 undefined, IE下是可以的
应该用:
document.getElementByID("TD1").getAttribute("isOBJ")
△ FF里select控件不再是:总是在顶端显示
所以可能需要设置控件的zIndex
IE里覆盖select控件的方法是, 用ifame
△ 对于if ( vars == undefined ) 下面的值用于判断是等同的
undefined
null
false
0
△ 如果FF调用obj.focus(); 报错,请尝试改为:
window.setTimeout( function(){ obj.focus(); }, 20);
△ FF下,keyCode是只读的, 那把回车转换为tab怎么办? 在录入时进行键值转换怎么办??
变通的方法是:
1. 回车跳转 -> 自己写跳转处理代码.
遍历dom里所有的元素, 找到当前元素的下一个能够设置焦点的元素, 给其设置焦点
2. 在能够录入的控件里,
把选中的部分替换为新录入的内容: var text = String.fromCharCode(event.keyCode);
同时阻止按键事件上传, 调用: event.preventDefault()
△ <button> 会被firefox解释为提交form或者刷新页面???
需要写标准<button type="button">
或者在onclick="原函数调用(); return false;"
△ 在firefox里, document.onfocus里获得不到实际获得焦点的控件?
为什么document.keydown可以呢?
△ children -> childNodes
△ sytle.pixelHeight -> style.height
△ 判断函数或者变量是否存在
if (!("varName" in window)) var VarName = 1;
△ document.body.clientWidth
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >
如果html包含上面的语句,则应该用下面的方法获取
document.documentElement.clientWidth
△ window.createPopup
FF不支持
△ document.body.onresize
FF 不支持
用window.onresize
注意,页面打开时并不会触发onresize事件? 需要在onload里也调用一次才行
△ box模型的问题
IE下默认的是 content-box 为了统一,可用设置:
div, td {-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding: 0;}
也可用在文档头加入:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
但是对IE旧代码影响较大
△ 注册事件
IE: attachEvent
FF: addEventListener("blur", myBlur, false);
第1个参数事件名称不需要带"on"
第3个参数false代表事件传递从事件对象沿dom树往body方向传
△ 触发事件
IE: obj.fireEvent("onclick");
FF:
var e = document.createEvent("Events");
e.initEvent("click", true, false);
element.dispatchEvent(event)
△ 在事件处理函数中获得对象句柄
var ōThis = this;
obj.onfocus = function(evt){
oThis.doOnFocus(evt);
}
△ 统一事件处理框架代码
doOnFocus(evt){
evt = evt || window.event;
var el = evt.target || evt.srcElement;
// 后续处理
}
△ FF不支持onpropertychange事件
但是FF里可以定义属性的setter方法, 如下面的:
HTMLElement.prototype.__defineSetter__("readOnly",function(readOnly){
// 构造虚拟的event对象
var evt = [];
evt["target"] = this;
evt["propertyName"] = 'readOnly'
//onpropertychange函数需要定义evt参数, 参考统一事件处理框架代码
if (this.onpropertychange) this.onpropertychange(evt);
});
☆ IE -> firefox css类
△ cursor:hand -> cursor:pointer
△ expression firefox不支持
在IE下expression也非常消耗CPU,所以不应该使用!!
为了达到较好的效果,应该建立自己的expression to javascript的处理函数
这样在IE和FF里就都能用了.
△ FILTER firefox不支持
filter: Alpha(Opacity=50);
替换为
-moz-opacity: 0.5;
△ text-overflow
不支持
△ transparent
firefox下 obj.setAttribute("bgColor","#ffffff") 只支持颜色
必须用 obj.style.backgroundColor = "transparent" 才行
△ FF下text控件高度与IE不同, 统一一下
input[type=text] {
height:20px;
}
注意input与[之间不能有空格!
△ font在IE里不能对body和td等起作用, FF可以
统一用 font-family
分享到:
相关推荐
### IE6特有bug兼容性问题整理 #### 1. 浮动(float)与相邻非浮动元素的表现差异 - **问题描述**: 在不同浏览器中,对于`float`元素和相邻非`float`元素的处理方式存在差异。具体表现为,在IE6中,当一个元素设置...
这篇博客文章“IE与FF兼容在JS方面要注意的一些问题”很可能探讨了在跨浏览器开发时遇到的常见问题和解决方案。 1. **DOM操作的差异**:IE和Firefox对DOM(Document Object Model)的操作方式不同,例如`innerHTML`...
### CSS浏览器兼容性整理 #### 一、IE6/IE7/IE8/Firefox/Chrome/Safari的CSShack兼容一览表 为了确保网站能在不同的浏览器中呈现出一致的效果,了解和掌握各种CSS hack技巧是非常重要的。以下是一些常用且有效的...
搜集整理的CSS HACK,也即是在多种浏览器(主要是ie6 ie7 ie8 ff)下样式统一的解决办法。 内容还是较全的,前台开发中常见的兼容性问题都可以找到解决方法,值得研究。 包括各浏览器CSS hack,技巧。有实例。
本文是软件开发网小编日常整理些关于js兼容性问题,及IE与Firefox等常用浏览器的兼容性分析,对js浏览器兼容性相关知识感兴趣的朋友一起学习吧! 1. children与childNodes IE提供的children、childNodes和firefox下...
做BS开发就难免会用到javascript,而每个浏览器对javascript的支持有不同。这就需要我们程序员去兼容他们下面是兼容IE和FF的js脚本做法和分解(部分选自网上,经本人整理),希望对大家有帮助。
本文向大家简单描述一下DIV+CSS相对IE6 IE7和IE8兼容问题整理,重点介绍一下IE6 IE7和IE8等浏览器的区别和联系,相信本文介绍一定会让你有所收获。 DIV+CSS相对IE6 IE7和IE8兼容问题整理 1.区别IE和非IE浏览器 ...
### CSS兼容方案整理 在网页开发过程中,不同的浏览器由于对CSS的支持程度不一,经常会遇到兼容性问题。本文档将详细介绍几种常用的CSS兼容性解决方案,包括CSS Hack技术、清除浮动方法以及解决特定浏览器问题的...
下面是兼容IE和FF的js脚本做法和分解(部分选自网上,经本人整理),希望对大家有帮助。 .以下以 IE 代替 Internet Explorer,以 MF/FF 代替 Mozzila Firefox //window.event IE:有window.event对象 FF:没有...
描述部分则阐述了在进行网页布局时遇到的跨浏览器兼容性问题,指出在不同的浏览器中预览网页可能会出现效果不一致的情况,作者因此整理了一套兼容性写法,以供需要的开发者参考。 标签中的“ie6hack”和“ie9hack”...
超链接访问过后hover...复制到系统剪贴板之IE,ff兼容版 javascript为FF设置首页 IE6使用滤镜使PNG图片透明后,容器内链接失效的问题 禁用文本框中文输入法的通用方法 我不是原创,我支持原创,我整理过的方便查看。
### IE6789与Firefox之间的CSS Hack整理 在Web开发过程中,为了兼容不同版本的浏览器,开发者常常需要使用到CSS Hack技术。CSS Hack是一种针对特定浏览器或浏览器版本的样式表编写技巧,它允许开发者为不同的浏览器...
"><td>不可右键</table> ``` **解析:** 这段代码中的 `ncontextmenu` 属性并不标准,但可以通过 JavaScript 实现相同的效果。 ### 2. 阻止文本选取 **技巧:** 使用 `nselectstart="return false"` 来阻止用户选取...
<% if Request.ServerVariables("HTTP_X_FORWARDED_FOR") <> "" then Response.Write("<font color=#FF0000>通过代理访问,真实IP为" & Request.ServerVariables("HTTP_X_FORWARDED_FOR")) %> ``` **解释**: 使用...
JavaScript在不同的浏览器上可能存在兼容性问题,尤其是在Internet Explorer (IE)和Firefox (FF)之间。以下是一些常见的差异和相应的解决方法: 1. **window.event** - 在IE中,`window.event`对象包含了当前事件...
在网页设计中,CSS(层叠样式表)的兼容性问题是一个常见的挑战,尤其是在不同的浏览器之间。由于每个浏览器对CSS规范的实现可能存在差异,开发者需要采用特定的技巧来确保样式在Internet Explorer(尤其是IE6、IE7...
【CSS新增特性思维导图梳理】是对CSS3中新增特性的整理,主要关注浏览器兼容性和CSS Hack技巧。CSS3引入了许多新的功能,提高了网页设计的灵活性和表现力。以下是其中的一些关键点: 1. **私有前缀**: 为了解决...
//document.writeln ('<dd>06月21日 修复IE6下兼容问题</dd>'); //document.writeln ('<dd>06月01日 懒人图库2012新版上线</dd>'); //document.writeln ('<dd>05月26日 新增北方网通服务器</dd>'); //document....
一、基础概念 CSS hack:针对不同的浏览器写不同的CSS code的过程。...div+css浏览器兼容IE6,IE7,FF之间的标识区别: IE6 IE7 FF * √ √ × important × √ √ 1. IE都能识别* ; 标准浏览