分類
軟體平台/工具

AJAX FancyUpload & ShadowBox 共存問題

網站一直使用的檔案上傳模組 FancyUpload 為 v2.0 版本也很穩定,不過因為 Adobe Flash Player 最近持續更新得很快,為了追上 flash 版本更新速度,比較能夠相容於 flash 各種版本(v9 & 10),決定從 v2.0 升級至 v3.0。這個上傳模組是植基於 AJAX library mootools,順便也將 mootools 更新至 v1.2.5。原本計畫再升級至 v1.3.1,但於 IE 8瀏覽器裡會發生未知錯誤,尚未找到處理方法,只好暫時作罷以後再說。新版 FancyUpload v3.0 單一檔案最大上傳為 2GB ,後台 JSP 必須設為 (-1 for unlimited)上傳檔案時,才不會被系統拒絕而上傳失敗。

為了避免彈出式視窗(popup)被瀏覽器阻擋,經過搜尋後決定採用 ShadowBox 插件來執行開啟彈出式視窗功能,而 CloudZoom 插件則是處理圖片局部放大效果。ShadowBox 和 CloudZoom 兩個插件均是植基於 AJAX library – jQuery。但 mootools 與 jQuery 兩個 不同類型 AJAX library 會發生相衝的問題,解決方式 (Using jQuery and MooTools Together) 是加 jQuery.noConflict(); 而且 AJAX library javascript include 順序 mootools.js 需先於 jquery.js。還有 CloudZoom 與 FancyUpload 這兩個插件也是不相容,還好這兩個插件沒用於同一網頁。

另一個 jQuery 插件 Impromptu 是用來取代傳統單調的 alert(), input(), confirm(),能夠做出複雜的 prompt(),但 Impromptu 與 ShadowBox 兩個插件共存於同一網頁時,javascript include 順序必須 impromptu.js 先於 shadowbox.js。

原本還有一個問題是 FancyUpload v3.0 使用在 IE8 會發生”物件不支援此屬性或方法“的錯誤,經過一番搜尋在討論區裡 (recompile the swf and modify .js files) 找到解決問題版本,最近 FancyUpload 已釋出更新版本(patch),無須擔心這個問題了。以上紀錄這次重大軟體更新的情形和問題,可能對網友們也有幫助。

分享