IE和FireFox浏览器的兼容问题( IE ->FF )

 

    通过firefox自带的工具学习的方法:
         打开TOOLS -> dom inspector , 左侧选中某个控件后, 右侧可以选择 JAVASCRIPT OBJECT
   
    通过自带工具调试javascript
        TOOLS -> JavaScript Console        
         
    打开所有js警告:
        在地址栏里录入:about:config
        双击,设置 javascript option restict  打开为true 能够看到很多警告,利于纠错
        
        
    ☆ 关于调试JS的tip
       调试js时,经常受缓存的影响,页面不会加载最新的代码,为此解决如下:
       在新页面里打开原来的地址,关闭原来的页面,ok了.
       以上方法在IE和FF下都有效.
      
       在ff下按Ctrl+shift+del, 打开清除私有信息对话框, 点击立即清除, 回到页面后reload一次也是可行的方案.
      

    
    
    ☆ IE -> firefox javascript类
         △   document.all   -> document.getElementById
                并且控件尽量用id,而不是name标识
               
                为了兼容旧代码,参考下面的函数, 把document.all 替换为 document_all即可
                function document_all(objName,doc){
                 if (!doc) doc = document;
                 
                 var obj;
                 obj = doc.getElementById(objName);
                 
                 if (!obj) obj = doc.getElementsByName(objName)[0];
                 
                 return obj;
                }
               
 
                提示:
                如果控件只有name,没有id, 用getElementById时:
                    IE:也可以找到对象
                    FF:返回NULL

         △   获得form里某个元素的方法
                formObj.elements['user_ 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 = ""
                 
                 
               
         △     不支持onpropertychange事件
        
         △     obj.insertAdjacentElement("beforeBegin",objText); 
                改为用
                obj.parentNode.insertBefore(objText,obj);
           
         △     createElement不支持HTML代码
                  用document.write(esHTML); 可以解决一部分情况
                 
         △     innerText -> textContent
        
         △     对象名称中的$不能识别, 建议改为_
                  objName = "t1$spin"
                  改为
                  objName = "t1_spin"
                 
         △     事件名称和注册方式的变化
                    addEventListener("blur", myBlur, false);
      
   
        △      FF里设置Attribute为某个对象,然后再取出来,这时候对象的属性都丢失了?
                 objText.setAttribute("dropdown_select",obj);
                 alert(obj.id)   //正确的名字
                 obj = objText.getAttribute("dropdown_select");
                 alert(obj.id) //null
                 
                  在IE下没有问题, FF对setAttribute来说,第2个参数都是字符串型的!!!
                  所以如果第2个参数是对象时,相当于调用对象的 toString() 方法了
                 
                  解决的方法是用下面的调用方式:
                  objText.dropdown_select = obj;
                 
                  obj = objText.dropdown_select
                 
                 
        △      className -> class
                  FF下用class代替IE下的className
                  由于class是关键字, 所以需要用 setAttribute/getAttribute才行
                  setAttribute("class","css样式名称");
       
        △      在html里定义的属性,必须用getAttribute才行
                  
                  获取时:
                  document.getElementByID("TD1").isOBJ  总返回 undefined, IE下是可以的
                  应该用:
                  document.getElementByID("TD1").getAttribute("isOBJ")
                                   
   
        △      FF里select控件不再是:总是在顶端显示
                  所以需要设置控件的zIndex
       
        △      对于if ( vars == undefined ) 下面的值用于判断是等同的
                   undefined
                   null
                   false
                   0
       
       
        △      如果FF调用obj.focus(); 报错,请尝试改为:
                    window.setTimeout( function(){ obj.focus(); }, 0);

 

       现在的方案是在失去焦点前判断
       △       关于在控件的blur事件里判断下一个获得焦点的控件的tip, 类似于Powerbuilder的item focus changing事件
                  用途举例: 对dropdown控件里的text控件,
                  如果下一个获得焦点的对象是selection,则不做录入控制,如果不是,则提示,并设置焦点为text
                 
                  经测试:
                  IE: blur发生在focus后
                  FF: blur发生在focus前调用
                 
                 
                  IE: 在onbeforedeactivate事件里用activeElement可以获得下一个对象
                 
                  FF: blur事件发生在focus前面,而FF又没有中间事件
                    下面的都不行!
                    target
                    currentTarget
                    relativeTarget
                   
                    看来需要这样处理!
                    注册所有控件的onblur,设置lastElement
                    在focus里处理上一个? 也不行啊!
                   
                    能否模拟自己的itemfocuschanging事件?
                    IE: onbeforedeactivate
                    FF: 抢先注册onfocus和onblur, 在里面设置activeElement
                          在onfocus里设置activeElement后,
                          调用onbeforedeactivate
                          如果onbeforedeactivate返回false,则设置focus为原来的控件!
                         
                 
                  在控件失去焦点前,设置lastObj=this
                  在控件获得焦点时,先判断lastObj是什么
                 
                 
                 
                                           
                   
       △       FF不能处理alert造成的死循环情况
                   
       △       FF下,keyCode是只读的, 那把回车转换为tab怎么办? 在录入时进行转换怎么办??
                 
                  变通的方法是:
                  1. 回车跳转 -> 自己写跳转处理代码.
                  2. 在能够录入的控件里,
                      把选中的部分替换为新录入的内容: var text = String.fromCharCode(event.keyCode);
                      同时阻止按键事件上传, 调用: event.preventDefault()
                            
      
       △       selection的难度较大,因为IE和FF没有接近的函数
                  为此专门做了一个对象来消除差异
                  感觉firefox的selection机制使用起来更简洁一些
                 
                  这种模式是桥梁模式还是
                 
                 
       △        会被firefox解释为提交form或者刷新页面???
                  需要写标准
                   
       △       在firefox里, document.onfocus里获得不到实际获得焦点的控件?
                  为什么document.keydown可以呢?
                 
       △       children    -> childNode()
      
      
       △       sytle.pixelHeight -> style.height
      
       △       obj.attachEvent("onfocus", editmask_focus);
          obj.onfocus = editmask_focus;
                  上面2句竟然有区别! 
                  如果用 attachEvent, 就不能用 this 关键字了!
                  通用的做法是不用this, 而是用 event.srcElement
                 
       △       fireevent不能用
      
       △       onpropertychange    -> oninput
      
       △       判断函数或者变量是否存在
                IE: if (funcName)   funcName();
                    if (varName == undefined)   varName=1;
                   
                FF: if (window.funcName)    funcName();
                    if (window.varName == undefined)   varName=1;
               
                即前面要加 window.
   

    ☆ 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" 才行

 

摘自 jxc博客

PC端各浏览器布局兼容问题【Chrome、FirefoxIE】——长期更新 1、FirefoxIE8下属性为“readonly”的表单元素获得焦点会有光标‘I’进去。解决办法:/(ㄒoㄒ)/~~2、IE不支持HTML5标签解决办法:CSS中添加如下代码main, nav, header, footer, section, article, aside, dialog, figure, menu { display: block; }3、文字排列方向1) CSS3属 阅读详情

相关推荐

vue3+vite +element-plus+tailwindcss兼容低版本浏览器(uc)

tailwindcss v2的 jit模式 任意值 arbitrary value 语法 已经足够好了。uc浏览器 对于 tailwindcss boxShadow 不支持 主要还是rgb原因。npm build 打包后 低版本浏览器才能打开 开发模式下低版本浏览器还是一片空白。uc浏览器 rgb支持不全 如rbg(0 0 0 /30%) 这种写法不支持。使用 tailwindcss @2.2.16 版本 v3低版本不支持。tailwindcss v3 部分样式在低版本下也不支持。

HHH917的博客 6775

vue3解决低版本浏览器兼容性问题

【代码】vue3解决低版本浏览器兼容性问题。

陆仁丶的博客 7926

下载echarts图片利用canvas标签生成下载地址,利用a标签下载在ie浏览器以及低版本火狐浏览器的兼容性问题

前言 想下载类似于echarts类似于这样统计图的图片。 因为echarts默认使用Canvas渲染,于是利用canvas.toDataURL(“image/png”)生成base64位码赋给a标签进行下载,产生了ie与Unix系统下火狐浏览器点击无反应不兼容的问题 解决方法 downloadImage(query){ if (query == '0') { this.downloadName = '张三' } else if (query == '1') {

sophia 630

IE浏览器火狐浏览器兼容问题——CSS篇

一、css+div 样式 IE与FF兼容问题汇总   CSS对浏览器器的兼容性具有很高的价值,通常情况下IE火狐浏览器存在很大的解析差异,这里介绍一下兼容要点。 1、DOCTYPE 影响 CSS 处理 2、FF: div 设置margin-left, margin-right 为 auto 时已经居中, IE 不行 3、FF: body 设置 text-align时, div 需要设置

qq_17610767的专栏 1245

火狐浏览器ie,谷歌的兼容问题

字体 谷歌ie浏览器的最小字体是12px,所以,当用火狐开发时,少于12px的字体都会在其他两个浏览器上出现问题。 //解决:使用 transform:scale(0.7); 对字体元素进行缩小。 滚动条的问题 ie谷歌浏览器 设置滚动条 下面的方式是可以的 // /* 定义滚动条样式 */ // .content::-webkit-scrollbar { // width: 6px; // height: 6px; // } //.content::-webkit-scrollb

qq_51403084的博客 1446

firefoxie兼容问题

对于国内设计师来说IE可能是我们最为熟悉的浏览器了,至少需求是最多的.到目前为止除了国外有客户会 提出浏览器的问题,在国内我还很少碰到有人提出浏览器兼容问题.因为大家似乎都默认了IE的各项规范比如说CSS的规范.尽管他的CSS规范可能有背与 W3C标准.说到W3C就不可以不提FIREFOX,FIREFOX对W3C标准支持方面是最好的,这也是为什么FIREFOX获得巨大成功的一个重要原 因.其实

pengdean的专栏 914

IEFirefox兼容问题

 1、Event的问题 在ie中我们可以直接使用event变量,但是在firefox下由于event是局部变量,firefox下我们可以事件绑定到元素上 例如    为了同时兼容iefirefox 通常在函数种通过以下代码获得事件。 var theEvent = window.event||e; var srcElement = theEvent.srcElement;    if (!srcE

走向架构师之路 807

selenium调用IE11Firefox浏览器

selenium调用IE浏览器与调用chrome方法相同,但是需要对IE做出一些设置 1、将此四处的保护模式关掉: 2、将增强保护模式关掉: 3、若浏览器版本为IE11,还需要修改注册表 路径为 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATUR...

liudong124521的博客 2328

insertRow() firefoxIE下的兼容问题 览器JavaScript时要注意的问题

table.insertRow() firefoxIE下的兼容问题 最近做了个Struts2.0的文章发布系统,使用dwr的框架,没想到在firefox下的兼容问题却不好,所以自己网上找了下才知道如何解决,本身我对js也不熟悉,web要学的东西还真多,哎。table.insertRow()IE下没问题 但在firefox下就得改为tabl

老张的专栏 5176

滤镜-FireFox火狐浏览器IE兼容问题

问题一:最简单的鼠标移过手变型的css要改了cursor:pointer;/*FireFox(火狐)不支持cursor:hand*/ dw8下面自动出来的也没有hand这个属性了,标准的是pointer 问题二:FireFox(火狐)不支持滤镜最常见的半透明不支持。

程序员成长之路 5269

chrome、FirefoxIE浏览器驱动下载地址

本文转载于:https://www.cnblogs.com/puhongjun/p/10232489.html 一、Firefox驱动下载地址 selenium2.X最高支持的Firefox版本为46,使用selenium2.X的话不需要下载火狐驱动,只需要配置火狐的启动路径即可。 Selenium3.0开始需下载geckodriver,想使用geckodriver ,Firefox浏览器必须是48或者更高版本。具体的浏览器浏览器驱动之间的对应关系可在geckodriver下载网站中的版本说明中查看。

weixin_48315662的博客 1991

css javascript等兼容IE6,IE7,IE8,IE9,FIREFOX,Chrome等浏览器详细解决方法

整理了css javascript等兼容IE6,IE7,IE8,IE9,FIREFOX,Chrome等浏览器详细解决方法。 CSS部分 div类 1. 居中问题 div里的内容,IE默认为居中,而FF默认为左对齐 可以尝试增加代码margin:auto 2. 高度问题 两上下排列或嵌套的div,上面的div设置高度(height),如果div里的实际内容大于所设高度,在FF中

coolwzjcool的专栏 8961

30个IEFirefox兼容问题

[size=xx-large][color=violet][align=center]30个IEFirefox兼容问题[/align][/color][/size] 1. document.form.item 问题 (1)现有问题: 现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在Firefox(火狐)下运行 (...

阳光雨露 227

CSS兼容IE6、IE7、IE8Firefox浏览器的方法

DIV+CSS相对IE6 IE7IE8兼容问题整理   1.区别IEIE浏览器 以下是代码片段: #tip{ background:blue;/*非IE背景?色*/ background:red\9;/*IE6、IE7、IE8背景?色*/ }   2.区别IE6,IE7,IE8,FF   【区别符号】:「\9」、「*」、「_」   【示例】: 以下是代码片段: #tip{ background:blue;/*Firefox背景变蓝色*/ background:red\9;/*IE8背景变红色*/ *b

sunsineq的专栏 287

JS在IE,firefox,chrome中的兼容问题

<br />面对三大主流浏览器IEfirefox,chrome,JavaScript在部分细节的使用上有所不同,下面就根据本人使用中的遇到的问题稍作总结。<br />1、对frameset的解析的不同<br />    IEchrome都可以使用frameset的name属性取得frameset,例如:<br /> <br /> <frameset id =top rows="70,*" frameborder="0" framespacing="0"><br /> <frame   name="tit

王庚的专栏 7861

关于IEFirefox下的兼容问题--相对定位

    对于定位问题,特别是在不用table,只用div之后,精确控制div就更为重要了,可是屋漏又逢连夜鱼,如今又发现了IEFirefox存在很大的差异,哎~~~~   今天发现相对定位offsetLeft,offsetTop,之间的差异,于是记之。(以下均以offsetLeft为例)   在IE中obj.offsetLeft是当前对象对上body对象的位移, 可是在Firefox里中,obj

yang6n的专栏 3595

firefox浏览器IE

http://blog.csdn.net/pipisorry/article/details/40899701 firefox浏览器插件 [ 下载地址add-ons for firefox] 皮皮blog firefox浏览器问题 firefox...

chuange6363的博客 113
下一篇: C#2.0经典读书笔记
iteye_808
博客等级 码龄8年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值