搜狗浏览器兼容性问题及解决办法_html/css_WEB-ITnose 为方便阅读代码,以ie代替internetexplorer,以sgbr代替搜狗浏览器:解决多种浏览器兼容性问题,如event对象、鼠标坐标、事件添加、自定义属性等方面。包括IE与sgbr在对象属性、事件处理、标签属性等方面的差异及解决方法,如srcElement与target、窗口高度宽度、添加事件方式等的不同处理。下面是小编精心整理编写的关于“ 搜狗浏览器兼容性问题及解决办法_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》这篇文章的具体内容就介绍到这里,希望能对大家有所帮助。更多相关资讯和教程请关注 搜狗输入法!
Win10中搜狗浏览器如何打开代替ie浏览器 尽管微软不再推荐使用IE浏览器,但在Win10系统中仍可找到。本文介绍在Win10中打开搜狗浏览器的方法:点击开始菜单后打开所有应用,在Windows附件 […]
Win10自带浏览器卸载提及搜狗浏览器 Win10系统中预装了搜狗浏览器,部分人可能觉得不好用,想卸载。本文将指导您卸载。首先,鼠标右击电脑左下角图标,出现下拉菜单后点击相应按钮进入。接着,在新页面输 […]
搜狗浏览器清理缓存的方法介绍 搜狗浏览器会缓存网页和数据以提升加载速度,但缓存过大可能致浏览器运行缓慢,定期清理很重要。清理步骤为:打开搜狗浏览器设置,找到“隐私”设置,点击“清除浏览数据”,选择要清 […]
搜狗浏览器如何彻底卸载干净 搜狗浏览器下载网小编子墨为您介绍彻底卸载搜狗浏览器的方法。日常中,完全删除搜狗浏览器以解决问题或重新安装时,简单卸载无法清除残留文件。先找到浏览器快捷方式,右键选择“打开文 […]
搜狗浏览器如何关闭网站拦截 本文介绍了在搜狗浏览器中关闭网站拦截的方法。用户点击浏览器图标,在右上角菜单中选择设置,进入设置窗口后切换到隐私与安全选项卡,找到阻止弹出式窗口选项并按下例外按钮,在网站地 […]
搜狗浏览器如何清除启动缓存 在搜狗浏览器中清除启动缓存:打开浏览器,点击右上角三横图标,在下拉选项卡中选择帮助,在显示的功能选项中点击更多排障信息,进入排障信息窗口后,在右侧板块按下清除启动缓存选项, […]
Win10浏览器主页被篡改搜狗浏览器如何应对 当发现Win10的搜狗浏览器主页被2345篡改时,不必惊慌,解决方法如下:重置浏览器设置,检查恶意软件,重新设置网络设置,清除浏览器缓存和历史记录,重建快 […]
搜狗浏览器未响应的解决方法 不少用户反映搜狗浏览器网页一直未响应,本文整理了解决方法。先打开搜狗浏览器,点击右上角帮助选择修复浏览器,根据问题情况选择修复内容,建议修复全部选项,修复前需保存工作。若问 […]