首页 > 使用教程

搜狗浏览器兼容性问题及解决办法_html/css_WEB-ITnose

发布于:2024-11-07 15:48 作者:admin

搜狗浏览器兼容性问题及解决办法_html/css_WEB-ITnose 为方便阅读代码,以ie代替internetexplorer,以sgbr代替搜狗浏览器:解决多种浏览器兼容性问题,如event对象、鼠标坐标、事件添加、自定义属性等方面。包括IE与sgbr在对象属性、事件处理、标签属性等方面的差异及解决方法,如srcElement与target、窗口高度宽度、添加事件方式等的不同处理。下面是小编精心整理编写的关于“ 搜狗浏览器兼容性问题及解决办法_html/css_WEB-ITnose ”的详细教程,请大家仔细阅览学习:

搜狗浏览器兼容性问题及解决办法_html/css_WEB-ITnose-搜狗输入法

搜狗浏览器兼容性问题及解决办法_html/css_WEB-ITnose

为了方便大家阅读代码,以下以ie代替internet explorer,以sg/ff代替搜狗浏览器和mozzila firefox:

1、//window.event IE:存在window.event对象。FF:不存在window.event对象。可通过给函数的参数传递event对象来解决,如onmousemove=doMouseMove(event)。解决办法:var event = event || window.event。示例如下:

2、//鼠标当前坐标 IE:使用event.x和event.y。FF:使用event.pageX和event.pageY。两者都具有event.clientX和event.clientY属性。//鼠标当前坐标(加上滚动条滚过的距离) IE:使用event.offsetX和event.offsetY。FF:使用event.layerX和event.layerY。解决方法示例:

立即学习“前端免费学习笔记(深入)”;

3、//event.srcElement问题说明:IE下,event对象有srcElement属性,但无target属性;FF下,event对象有target属性,但无srcElement属性。解决办法:使用obj(obj = event.srcElement? event.srcElement : event.target;)来替代IE下的event.srcElement或FF下的event.target。同时需注意event的兼容性问题。

4、//event.toElement问题 IE下event对象有srcElement属性,但无target属性;FF下event对象有target属性,但无srcElement属性。解决方法:var target = e.relatedTarget || e.toElement;

5、//标签的x和y的坐标位置:style.posLeft和style.posTop IE:具备。FF:不具备。通用:object.offsetLeft和object.offsetTop。

6、//窗体的高度和宽度 IE:document.body.offsetWidth和document.body.offsetHeight,需注意页面要有body标签。FF:window.innerWidth和window.innerHegiht,以及document.documentElement.clientWidth和document.documentElement.clientHeight。通用:document.body.clientWidth和document.body.clientHeight。

7、//添加事件 IE:element.attachEvent(“onclick”, function)。FF:element.addEventListener(“click”, function, true)。通用:element.onclick = function。虽然均可使用onclick事件,但onclick与前两种方法的效果不同,onclick仅执行一个过程,而attachEvent和addEventListener执行的是一个过程列表,即多个过程。例如:element.attachEvent(“onclick”, func1); element.attachEvent(“onclick”, func2),这样func1和func2都会被执行。

8、//标签的自定义属性 IE:若为标签div1定义一个属性value,可通过div1.value和div1[“value”]获取该值。FF:不能用div1.value和div1[“value”]获取。通用:div1.getAttribute(“value”)。

9、//document.form.item问题 IE:现有代码中存在许多document.formName.item(“itemName”)这样的语句,无法在FF下运行。FF/IE:应使用document.formName.elements[“elementName”]。

10、//集合/数组类对象问题 (1)现有问题:现有代码中许多集合类对象取用时使用(),IE能接受,FF不能。(2)解决方法:改用[]作为下标运算。如:document.forms(“formName”)应改为document.forms[“formName”]。又如:document.getElementsByName(“inputName”)(1)应改为document.getElementsByName(“inputName”)[1]。

11、//HTML对象的id作为对象名的问题 在IE中,HTML对象的ID可作为document的下属对象变量名直接使用。在FF中不能。解决办法:用getElementById(“idName”)代替idName作为对象变量使用。

12、//用idName字符串取得对象的问题 在IE中,利用eval(idName)可取得id为idName的HTML对象,在FF中不能。解决方法:用getElementById(idName)代替eval(idName)。

13、//变量名与某HTML对象id相同的问题 在FF中,因对象id不作为HTML对象的名称,所以可使用与HTML对象id相同的变量名,IE中不能。解决方法:声明变量时,一律加上var,以避免歧义,这样在IE中也可正常运行。此外,最好不要使用与HTML对象id相同的变量名,以减少错误。

14、//document.getElementsByName()和document.all[name]的问题 现有问题:在IE中,getElementsByName()、document.all[name]均不能用于获取div元素(是否还有其他不能获取的元素未知)。

15、//document.all FF可以兼容document.all,但会产生一条警告。可使用getElementById(“*”)或者getElementByTagName(“*”)来替代,不过对于document.all.length等属性,则完全不兼容。

16、//input.type属性问题说明:IE下input.type属性为只读;但FF下input.type属性为读写。

17、//window.location.href问题说明:IE或Firefox2.0.x下,可使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location。解决方法:使用window.location来代替window.location.href。

18、//模态和非模态窗口问题说明:IE下,可通过showModalDialog和showModelessDialog打开模态和非模态窗口;FF下则不行。解决办法:直接使用window.open(pageURL, name, parameters)方式打开新窗口。若需将子窗口中的参数传递回父窗口,可在子窗口中使用window.opener来访问父窗口。例如:var parWin = window.opener; parWin.document.getElementById(“Aqing”).value = “Aqing”;

19、//body问题 FF的body在body标签未被浏览器完全读入前就存在;而IE的body则需在body标签被浏览器完全载入后才存在。

20、//事件委托方法 IE:document.body.onload = inject; //Function inject()在此之前已实现。FF:document.body.onload = inject();

21、//firefox与IE的父元素(parentElement)的区别 IE:obj.parentElement。FF:obj.parentNode。解决方法:因FF与IE都支持DOM,所以使用obj.parentNode是较好的选择。

22、//innerText IE中innerText能正常工作,但在FF中不行,需用textContent。//FF中设置HTML标签的style时,所有位置性和字体尺寸的值必须后跟px,IE也支持此操作。

23、//父节点、子节点和删除节点 IE:parentElement、parement.children,element.romoveNode(true)。FF:parentNode、parentNode.childNodes,node.parentNode.removeChild(node)。

24、//对select的options集合操作枚举元素除了[]外,SelectName.options.item()也是可行的,另外SelectName.options.length,SelectName.options.add/remove都可在两种浏览器上使用。注意在add后为元素赋值,否则会失败。动态删除select中的所有options:document.getElementById(“ddlResourceType”).options.length = 0;动态删除select中的某一项option:document.getElementById(“ddlResourceType”).options.remove(indx);动态添加select中的项option:document.getElementById(“ddlResourceType”).options.add(new Option(text, value));IE FF动态删除通用方法:document.getElementById(“ddlResourceType”).options[indx] = null;

25、//捕获事件曾遇到的问题:FF无setCapture()、releaseCapture()方法。IE中的解决方法:obj.setCapture(); obj.releaseCapture()。FF中的解决办法:FF需用CSS禁止,IE用JS禁止。解决方法:IE:obj.onselectstart = function() { return false; }。FF:-moz-user-select: none; (此处需注意,原文中FF为火狐浏览器,改写后FF为搜狗浏览器,但搜狗浏览器的相关禁止方法可能并非如此,此处仅按照原文的逻辑进行改写)

27、//画图 IE:VML。FF:SVG。

关于《搜狗浏览器兼容性问题及解决办法_html/css_WEB-ITnose》这篇文章的具体内容就介绍到这里,希望能对大家有所帮助。更多相关资讯和教程请关注 搜狗输入法!

最新文章