JS兼容Firefox

    技术2022-05-12  7

      打开TOOLS -> dom inspector , 左侧选中某个控件后, 右侧可以选择 JAVASCRIPT OBJECT   通过自带工具调试javascript   TOOLS -> JavaScript Console   打开所有js警告:   在地址栏里录入:about:config   双击,设置 javascript option restict 打开为true 能够看到很多警告,利于纠错   ☆ 关于调试JS的tip   调试js时,经常受缓存的影响,页面不会加载最新的代码,为此解决如下:   在新页面里打开原来的地址,关闭原来的页面,ok了.   以上方法在IE和FF下都有效.   ☆ IE -> firefox js类   △ 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   △ 判断对象是否是object的方法应该为   if( typeof 对象变量 == "object")   而不是 if(对象变量 == "[object]")   △ eval(对象名称) -> document.getElementById   FF支持eval函数   △ 通过id直接调用对象   name.value = ""   改为   document.getElementById("name").value = ""   △ window.event 的改造, firefox和opera会在调用函数时传入event对象,   ie用全局对象window.event,可以修改事件处理函数,接收event对象   function editmask_keydown(event){   event = event || window.event;   这样定义对系统改动比较大, 所以从底层转换处理,可能更好一些   参考 ie_to_w3c.js   △   mX = event.x ? event.x : event.pageX;   △ 不支持onpropertychange事件   △ obj.insertAdjacentElement("beforeBegin",objText);   改为用   obj.parentNode.insertBefore(objText,obj);   △ createElement不支持HTML代码   用document.write(esHTML); 可以解决一部分情况   △ innerText -> textContent   △ 对象名称中的$改为_   objName = "t1$spin"   改为   objName = "t1_spin"   △ 事件名称和注册方式的变化   this.selYear.addEventListener("blur", myBlur, false);   △ FF里设置Attribute为某个对象,然后再取出来,这时候对象的属性都丢失了?   objText.setAttribute("dropdown_select",obj);   alert(obj.id) //正确的名字   var objxx = objText.getAttribute("dropdown_select");   alert(objxx.id) //null   在IE下没有问题, FF对setAttribute来说,第2个参数都是字符串型的!!!


    最新回复(0)