本周在用jquery file upload這個插件做檔案上傳功能。但是打開頁面的時候,浏覽器控制台報錯:
typeerror: object [object object] has no method 'progressbar'
然後看了一下具體的位置,在jquery.fileupload-jquery-ui.js的_create方法中,就是這個方法的最後一句:.end().find('.progress').progressbar();
似乎是找到了class為progress的元件,但是這個對象沒有progressbar()這個方法,然後在幾個相關的js檔案中找了一圈,都沒有找到progressbar()方法的定義。難道是我沒有引用定義這個方法的js檔案?。。。
然後百度,一條有價值的資訊都沒有。沒辦法,翻牆用谷歌,一下子就找到了有用的資訊:
從這兩個老外的對話看,應該就是沒有引用相關的js檔案了。看到“jquery ui library” 這個詞,忽然想到些什麼。
剛開始做這個功能的時候,各種插件都是從這個網址下的:http://plugins.jquery.com/blueimp-file-upload/
得到的是一個名為blueimp-jquery-file-upload-9.7.0-0-g91b20e5的檔案夾,裡面有一堆的js檔案。而問題就來了,導緻progressbar報錯的那個沒有被引用的檔案,恰恰不在這個檔案夾裡。而需要從另外一個網址下,百度jquery ui library,進入第一個網址:http://jqueryui.com/
這個和剛才不同,這個更多得提供了ui方面的内容,下載下傳得到的檔案夾名為:jquery-ui-1.11.0
而在這個檔案夾裡,有一個名為jquery-ui.js的檔案,這個檔案中才定義了progressbar方法,然後将這個js引用到頁面上,ok,不報錯了。
老外雖然技術很牛,能做出jquery這一套插件,。。。但是既然上傳功能是比較完整的一個大子產品,怎麼就不能把相關的js一起打包進去讓别人下載下傳呢。。。害我繞了這麼一大圈。