使用iframe快速解決IE6下彈出層被下拉列表遮擋問題

 週五快下班的時候,收到一個後臺研發提交的一個BUG:某君寫的彈出層在IE6下被下拉列表遮擋了。

(左圖爲:未彈出選擇層效果)

(左圖爲IE8下彈出層效果)

(左圖爲IE6下效果)

由於在IE6中,下拉列表擁有比較高權限,會把除frame外的元件遮擋,這是IE6的一個BUG,在IE7及以上版本已經修復。目前瞭解到只有兩種方法可以解決:

1.自定義下拉列表組件;

2.使用比其更高權限的iframe進行遮擋,然後使iframe置於彈出層的下層。

由於時間緊,所以放棄了方法1。直接使用iframe對下拉列表進行遮擋。首先,跟蹤頁面(editsinglematterForSSDJ.html)<button id=”showmcBtn” type=”button” false;”><span>選擇</span></button>找到觸發元素事件:showMatterCategorySelect,在IE8上使用開發工具檢索到事件來自editsinglematterForSSDJ.js文件的function showMatterCategorySelect(){ selectMatterCategoryTree.showDropDownTree();}函數,並找到初始化彈出層的initTree()方法:selectMatterCategoryTree.initTree(dropTreeParamObj);

由於不想深入變更彈出層的組件修改,所以直接在樹層初始化後,對DOM進行操作,插入iframe使其遮擋下拉列表:$(‘#checkBoxTree_SelectContent’).prepend(“<iframe scrolling=’no’ frameborder=’0′ style=’background-color:transparent;z-index:-1;position:absolute;width:160px;height:100px;’><body></body></iframe>”);因爲彈出樹層初始化後生成的父級DIV的ID是“checkBoxTree_SelectContent”,所以在其裏面插入了iframe並使用絕對定位。

經IE6測試通過,最終結果如下圖:

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