Firefox獲取隱藏表單元素的parent節點的Bug
getXY : function(element){ var y = element.offsetTop; var x = element.offsetLeft; while(element = element.offsetParent){ y += element.offsetTop; x += element.offsetLeft; } return (new Array(x,y)); } |
貌似是這個問題,遞歸代碼在火狐下好像有問題,要打樁測一下(不打樁了,有log輸出就容易了)
getXY : function(element){ var y = element.offsetTop; var x = element.offsetLeft; var i=0; while(element = element.offsetParent){ y += element.offsetTop; x += element.offsetLeft; i++; } //firefox debug console.log(i); console.log(y); console.log(x); return (new Array(x,y)); } |
在ie9下為4 120 100,正常
火狐為0 0 0,看來只要換個遞歸的寫法就行了,
但是這個問題的原因要查清楚,項目里有這種風格寫法的人,可能對于火狐的解析器來說
while(element = element.offsetParent)估計一開始就等于false啊..具體測試下
具體文章javascript的互等性,要補一下了.
火狐下element.offsetParent一開始就等于null
還是要去打樁,bug無法確定了,有可能是遞歸寫法問題,又可能是前面傳的element對象不對
還是不用打樁,調試時的一個報錯,說明火狐解析器對判斷條件里的element = element.offsetParent的理解是正確的.
前面的傳參不對,or火狐對offsetParent的屬性理解不對(如果加懸浮布局,那么火狐下是直接父節點直接對應body的,然后當然是null,記得是),沒有使用危險的css屬性,應該不會有問題的啊,
getXY : function(element){ var y = element.offsetTop; var x = element.offsetLeft; var i=0; if(!element.offsetParent) console.log("null"); console.log(element.id); while(element = element.offsetParent){ y += element.offsetTop; x += element.offsetLeft; i++; } //firefox debug console.log(i); console.log(y); console.log(x); return (new Array(x,y)); } |
傳參正確,獲得的id和在ie下一樣,不過應該沒有并沒有該id對應的對象在頁面中存在,不過ie能理解,這個火狐也是認得,但是貌似這個parent對象火狐處理得和ie不同(直接為空,ie正常)
差點以為有又有什么我不知道的寫法,xx_xx什么的可以直接一起獲取,當然不可能啊,草,怪怪的語言,隨時提心吊膽的
是 獲取一個隱藏的input對象的父節點問題,導致常用的遞歸獲取元素絕對坐標方法的遞歸失敗.在firefox下,隱藏表單字段估計直接對應body節點 (猜的),那么就是為空(或者直接就是對象屬性封裝的問題,反正是bug),估計就是這個問題了,稍微修改后BUG被clear(在getXY里用固有結 構,把對象指向日期框后解決)
offsetParent這個屬性是個level0的屬性,實現各異
而jq中的>可以跳來跳去,會不會也有這個bug呢?還是jq處理了這個BUG,等有時間再去測試吧
接下來就是一些css問題,和修復原控件的select的fous問題,還是盡量不要用input這玩意在ie6下并不好,xinput控件調用又太麻煩了
基于先前研究,進銷存模塊使用的透明圖片加div顏色屬性實現的皮膚效果,可以進行日期控件在保證其他位置引用兼容性的前提下,進行和進銷存模塊獨有的表單皮膚系統整合
在前輩的指導下修改了getYear(),getFullYear(),火狐是不支持 getYear()的,一開始我還以為那個控件一直是從Const里獲得年月日的,其實是外部調用時傳個date()對象?有時又在控件里建date()對象,當初可能是想做什么吧,中途可能放棄了,那Const里那個年月日是干嘛的,要好好看看去
發現火狐失去焦點事件的bug,可能比較難改,簡單說就是點擊旁邊后,選擇框不會關..選擇時候的鼠標狀態問題,火狐好像不會變選擇手勢呢
posted on 2014-11-10 10:11 順其自然EVO 閱讀(499) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄 、selenium and watir webdrivers 自動化測試學習