
112
|
第七章
目前的解決方式,乍聽之下會有點像是駭客的手法,但它的確可行。當使用者的滑鼠游
標滑到「瀏覽」鈕上方時,隨即在「瀏覽」鈕上方產生一個透明,而且大小、位置都和
「瀏覽」鈕一模一樣的檔案輸入欄位,用它覆蓋住「瀏覽」鈕。這麼一來,這個透明的
檔案輸入欄位,就會搶先一步擷取到所有的 click 事件,並且開啟一個瀏覽檔案總管讓
使用者點選檔案。
本書的範例程式檔
assets/ch07/jquery.browse.js
,是一個 jQuery 的外掛模組,它的作用正
是如此。只要透過 jQuery 物件實體呼叫
browseElement()
函式,就可以建立自製的檔案
瀏覽鈕。這個函式會回傳一個檔案輸入欄位,你可以替它設定一組
change
事件監聽器,
使用者一旦選取了某些檔案,就會隨即被偵測到。
var input = $("#attach").browseElement();
input.change(function(){
var files = $(this).attr("files");
});
這樣的做法,不僅能在所有的瀏覽器上正常運作,而且程式也非常簡單!
上傳檔案
XMLHttpRequest 的 Level 2 規 格(
http://www.w3.org/TR/XMLHttpRequest2
)裡面有一部
分,是在定義和上傳檔案相關的功能。對使用者而言,上傳檔案一直稱不上是愉快的
操作體驗。當使用者選好要上傳的檔案之後,要先等瀏覽器重新載入網頁,然後再等上
好一段時間,檔案才會上傳完成,而且上傳的過程中也看不到上傳進度或其他的回應訊 ...