JS兼容Firefox

打開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個參數都是字符串型的!!!

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/nileel/archive/2009/05/04/4147597.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章