【茶包射手日記】jQuery自動完成在IE7無法點選提示項目

網友Barry提問,網站套用jQuery AutoComplete Plugin,在IE7下無法用滑鼠點選結果項目,只能透過上下鍵移動選取。

看來得用IE7重現及分析錯誤,此時最痛苦的莫過於沒有IE Dev Tools可用,少了+9雙手劍,只能丟石頭打怪好悲情呀~ 幸好,IE7還有個IE Dev Toolbar可用,拿支小匕首聊勝於無。

在IE7上重現無法點選提示項目的情境,再開啟IE Dev Toolbar,觀察提示區塊的結構,發現DIV class=ac_reulsts下有一個IFRAME,接著才是列出結果的UL,而我注意到該IFRAME的z-index是10,意思是IFRAME會出現在UL上方,造成UL區被遮蔽,猜想就是導致無法使用滑鼠操作的原因。

追查原始碼,發現插入IFRAME是jquery.autocomplete.js為了處理IE6 SELECT蓋不住問題加入的Hacking:

if ($.browser.msie)
{
    // we put a styled iframe behind the calendar so HTML SELECT elements don't show through
    $results.append(document.createElement('iframe'));
}

(此時,我才發現同樣的問題在IE8/9也會發生... 登楞! 那我拿小匕首殺怪是為了什麼? 只好用"偶爾懷舊發思古之幽情有益身心"自我安慰。)

比對了我的範例網頁,同樣有插入IFRAME,滑鼠運作正常,進行交叉比對:

發現差異在於範例的版本z-index為-1,使其被排在<UL>的下方,才不會遮蓋<UL>阻礙滑鼠操作。

利用Trace Style功能,找到問題網站是因為 /js/201112/jquery.autocomplete.css .ac_results IFRAME將Z-INDEX設為10而導致問題。用IE Dev Toolbar強制將IFRAME z-index Attribute設為-1,再移除div.ac_results的display:none讓隱藏的結果提示區顯現,此時測試滑鼠移動會引發Hover反白效果,也能點選結果,問題排除,全案宣告偵破~

歡迎推文分享:
Published 23 December 2012 08:08 AM 由 Jeffrey
Filed under: , ,
Views: 9,302



意見

# 挖寶樂 said on 28 January, 2013 01:43 PM

Barry: jQuery AutoComplete Plugin,在IE7下無法用滑鼠點選結果項目。

結果在IE8/9也會發生,這是整人節目嗎?

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<December 2012>
SunMonTueWedThuFriSat
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication