【獲取數(shù)據(jù)】
調(diào)用preview方法,就會執(zhí)行預(yù)覽程序:
if ( this.file && false !== this.onCheck() ) { this._preview( this._getData() ); }
在通過檢測后,再調(diào)用_getData獲取數(shù)據(jù),并作為_preview的參數(shù)進(jìn)入預(yù)覽下一步。
程序初始化時就會根據(jù)mode來設(shè)置_getData數(shù)據(jù)獲取程序:
this._getData = this._getDataFun(opt.mode);
mode的默認(rèn)值是ImagePreview.MODE,也可以在可選參數(shù)中自定義。 由于兼容性問題,一般應(yīng)保留默認(rèn)值,除非是使用全兼容的remote模式。
在_getDataFun里面,根據(jù)mode返回數(shù)據(jù)獲取程序:
switch (mode) { case "filter" : return this._filterData; case "domfile" : return this._domfileData; case "remote" : return this._remoteData; case "simple" : default : return this._simpleData; }
不同的模式有不同的數(shù)據(jù)獲取程序: 濾鏡數(shù)據(jù)獲取程序:
this.file.select(); try{ return document.selection.createRange().text; } finally { document.selection.empty(); }
一般用在ie7/8,在file控件select后再用selection對象獲得文件本地路徑。 此時file控件不能隱藏,否則不能被select,不過一般能選擇文件就肯定能被select了。確實要隱藏也可以在獲取數(shù)據(jù)之后再隱藏。
domfile數(shù)據(jù)獲取程序:
return this.file.files[0].getAsDataURL();
用getAsDataURL從file控件獲取數(shù)據(jù),這個方法暫時只有ff3支持。
遠(yuǎn)程數(shù)據(jù)獲取程序:
this._setUpload(); this._upload && this._upload.upload();
用_upload上傳文件對象把數(shù)據(jù)提交后臺,根據(jù)返回的數(shù)據(jù)再顯示。 這個方法不屬于本地預(yù)覽,是沒有辦法中的辦法。
一般數(shù)據(jù)獲取程序:
return this.file.value;
最原始的方法,現(xiàn)在只有ie6還支持從file的value直接獲取本地路徑。
獲取的數(shù)據(jù)作為參數(shù),在_preview預(yù)覽程序中進(jìn)行預(yù)覽:
if ( !!data && data !== this._data ) { this._data = data; this._show(); }
首先排除空值或相同值的情況,再執(zhí)行_show預(yù)覽顯示程序,其中_data屬性用來保存當(dāng)前的圖片數(shù)據(jù)。 圖片使用Data URI數(shù)據(jù)時可能會設(shè)置一個很大的src值,在ie8獲取很大的src值會出現(xiàn)“無效指針”的錯誤。 使用_data屬性保存這個值可以避免從src獲取值而觸發(fā)這個錯誤。
遠(yuǎn)程數(shù)據(jù)獲取程序沒有返回值,因為它需要等待返回數(shù)據(jù),在_preview中會自動排除。
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁 JavaScript 圖片預(yù)覽效果 [2] 下一頁 JavaScript 圖片預(yù)覽效果 [4]
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|