aspnet簡(jiǎn)便無(wú)刷新文件上傳系統(tǒng)_第1頁(yè)
aspnet簡(jiǎn)便無(wú)刷新文件上傳系統(tǒng)_第2頁(yè)
aspnet簡(jiǎn)便無(wú)刷新文件上傳系統(tǒng)_第3頁(yè)
aspnet簡(jiǎn)便無(wú)刷新文件上傳系統(tǒng)_第4頁(yè)
aspnet簡(jiǎn)便無(wú)刷新文件上傳系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、簡(jiǎn)便無(wú)刷新文件上傳系統(tǒng)z前寫過(guò)一個(gè)仿163網(wǎng)盤無(wú)刷新多文件上傳系統(tǒng),已經(jīng)對(duì)無(wú)刷新上傳文件的原理做了詳細(xì)的 分析而這次的系統(tǒng)主要是針對(duì)單個(gè)file控件的,便攜版,使用更簡(jiǎn)單,還有更深入的分析 ps: flash實(shí)現(xiàn)的效果是好得多,但這不是我研究的范圍,也沒(méi)什么可比性。兼容:ie6/8, firefox 3.5.5, opera 10.01, safari 4.0.3, chrome 3.0ps:由于需要后臺(tái),要測(cè)試系統(tǒng)請(qǐng)下載實(shí)例測(cè)試。ps2:在完整實(shí)例文件屮,還有一個(gè)文件屬性查看實(shí)例。程序說(shuō)明upload程序中最重要的方法就是upload 了,調(diào)用它就可以進(jìn)行無(wú)刷新上傳。upload的過(guò)程是這樣

2、的,首先用stop方法停止上一次上傳,并判斷是否選擇文件。然后分別調(diào)用_setlframe, _setform 和_setlnput,生成需要的 iframe, form 和 input。如果設(shè)置了 timeout屬性的話,會(huì)自動(dòng)設(shè)置計(jì)時(shí)器:復(fù)制代碼代碼如下:if (this.timeout > 0 ) this._timer = settimeout( $f.bind(this._timeout, this), this.timeout * 1000 ); ps:經(jīng)測(cè)試,小于0的延時(shí)時(shí)間,ie會(huì)取消執(zhí)行,而其他瀏覽器會(huì)當(dāng)成0執(zhí)行。程序有一個(gè).sending屬性用來(lái)判斷上傳狀態(tài)。在sto

3、p (停止),dispose (銷毀),_finis (完成),_timeout (超時(shí))時(shí)會(huì)把它設(shè)為false。 而在上傳開(kāi)始前要把它設(shè)置為true。最后提交表單就開(kāi)始上傳了。iframe程序使用_setlframe函數(shù)來(lái)創(chuàng)建無(wú)刷新需要的iframe。由于ie中iframe的name不能修改的問(wèn)題,要這樣創(chuàng)建iframe:復(fù)制代碼代碼如下:var 訐ramename = "quickuploadj + quickupload._counter+,iframe = document.createeleme nt( $b.ie ? h<iframe n ame=,h + if r

4、am en ame +: niframen); = iframe name;iframe.style.display = "no ne”;ps:關(guān)t iframe的name的問(wèn)題參考這里的iframe部分。ie8已經(jīng)可以修改name?,但在非標(biāo)準(zhǔn)(怪辟)模式下還是不能修改。其中使用了一個(gè)quickupload函數(shù)自身的.counter屬性做計(jì)算器,這就能保證各個(gè)實(shí)例的 iframe的name就不會(huì)重復(fù)。為了能在文件上傳完成后執(zhí)行回調(diào)函數(shù),會(huì)在iframe的onload中執(zhí)行_finish函數(shù):復(fù)制代碼代碼如下:var finish = this._ffinish

5、 = $f.bind(this._finish,this);if($b.ie)iframe.attacheventf nonloact, finish ); else iframe.onload = $b.opera ? functi on() this, on load = fin ish;: finish;在ie需要用attachevent來(lái)綁定onload,因?yàn)樵趇e中直接設(shè)置onload是無(wú)效的。 除了用 attachevent 還可以用 onreadystatechange 代替。至于原因我也不清筑,詳細(xì)參考“判斷訐rame是否加載完成的完美方法”。iframe的加載還有一個(gè)問(wèn)題,測(cè)

6、試以下代碼:復(fù)制代碼代碼如下:<bodyxdiv id=”msg狀態(tài):</divx/body><script>var msg = document.getelementbyldmsg“);var iframe = document.createelementiframe“);iframe.onload = function() msg.innerhtml += ''onload/'docume ntbody.appendchild(iframe);訐 rame.src = n</script>結(jié)果safari, chrome都會(huì)

7、觸發(fā)onload兩次,而opera, ff和ie (請(qǐng)自行兼容)都是1次。估計(jì)在safari和chrome在appendchild z后就進(jìn)行第一次加載,并且在設(shè)置src z前加載完 畢,所以觸發(fā)了兩次。如果在插入body之前給iframe隨便設(shè)置一個(gè)src (除了空值),間接加長(zhǎng)第一次加載,那么 也只觸發(fā)一次了。ps:不設(shè)置或空值的src相當(dāng)于鏈接到“about:blank”(空白頁(yè))。那么opera, ff和ie可能是第一次加載太慢,第二次覆蓋了第一次的,所以只觸發(fā)了一次on loadops:也可能是其他原因,例如瀏覽器優(yōu)化之類的,我也不確定。針對(duì)加載過(guò)快的問(wèn)題,可以在onload的時(shí)候根

8、據(jù)_sending確定z前是否上傳狀態(tài)來(lái)解決。雖然沒(méi)測(cè)試出來(lái),會(huì)不會(huì)有.sending設(shè)置z后submit z前剛好觸發(fā)第一次onload的情況呢? 針對(duì)這個(gè)問(wèn)題,在upload方法中會(huì)把.sending放在submit之后設(shè)置。那如果在submit之后_sending設(shè)置之前就觸發(fā)了 onload呢?(冏)這個(gè)情況基本不會(huì)出現(xiàn),如果真的出現(xiàn),就把.sending設(shè)置放到submit前面吧。opera還有一個(gè)麻煩的問(wèn)題,測(cè)試下面代碼:復(fù)制代碼代碼如下:<body><div id="msg">狀態(tài):</div><form action

9、=h target=,ifr"></form></body><script>var msg = document.getelementbyldcsg11);var iframe = document.createelement(,iframe'1); = nifrh;iframe.onload = function() msg.innerhtml += "onload,11;docume nt.body.appe ndchild(iframe);msg.innerhtml += "submit

10、,"docume ntforms0.submit();</script>ie 和 ff 顯示 submit,onload, safari 和 chrome 顯示的是 onloadubmionload,跟上面的分析 一致。而opera去卩顯示submit,onload,onload,兩次onload都是在submit之后觸發(fā)的。這個(gè)情況就不能單純用.sending來(lái)解決了。是不是submit不能使iframe収消加載呢?在appendchild之前設(shè)一個(gè)src,結(jié)果正常的只觸發(fā)onload 一次,看來(lái)是可以的啊。雖然不知道原因,辦法還是有的,一個(gè)是appendchild前設(shè)

11、一個(gè)src,還可以在第一次onload 中重新設(shè)置onload,像程序那樣。但這兩個(gè)方法都存在不確定性,不能完全解決問(wèn)題,但也找不到更好的方法了。ff的onload還有一個(gè)問(wèn)題,在出現(xiàn)error_internet_connection_reset (文件大小超過(guò)服 務(wù)器限制)z類的服務(wù)器錯(cuò)誤時(shí),即使加載完成也不會(huì)觸發(fā)onload,暫時(shí)找不到解決辦法。iframe有一個(gè)缺陷是只能用onload判斷加載完成,但沒(méi)有辦法判斷是否加載成功。沒(méi)有類似xmlhttp的status的東西,遇上404 z類的錯(cuò)誤也沒(méi)辦法判別出來(lái)。在使用時(shí)要做好這方面的處理,例如說(shuō)明允許上傳文件大小,超時(shí)時(shí)間,如何處理長(zhǎng)時(shí)間無(wú)

12、 響應(yīng)等。form程序使用jetform函數(shù)來(lái)創(chuàng)建用來(lái)提交數(shù)據(jù)的form。要實(shí)現(xiàn)無(wú)刷新上傳,要對(duì)form進(jìn)行特殊的處理:復(fù)制代碼代碼如下:$.extend(form, target: , method: "post", encoding: "multipart/form-data");ps:詳細(xì)看這里的無(wú)刷新上傳部分。由于form是手動(dòng)插入的,為了不影響原來(lái)頁(yè)面布局還要設(shè)置一下form樣式,使它“隱形” 起來(lái):復(fù)制代碼代碼如下:$d.setstyle(form, padding: 0, margin: 0, border:

13、0, backgroundcolor: "transparent", display: "inline” );還要注意的是,同一個(gè)表單控件只能對(duì)應(yīng)一個(gè)form。 如果file控件本身己經(jīng)有一個(gè)form的話,必須在提交前移除:file.form && $e.addevent(file.form, "submit", $f.bind(this.dispose, this);dispose方法是用來(lái)銷毀程序的,包括移除formo ps:如果提交前submit被覆蓋的話要手動(dòng)執(zhí)行一-次dispose方法。最后把form插入到dom:fi

14、le.parentnode.insertbefore(form, file).appendchild(file);先把form插入到file控件之前,然后把file插入到form,這樣就能保證file在原來(lái)的位置上 to【input如果有其他參數(shù)要傳遞,程序會(huì)使用_setlnput函數(shù)來(lái)創(chuàng)建傳遞數(shù)據(jù)的表單控件。ftl于生成的form里面只有file控件,要傳遞其他參數(shù)只能用程序生成了。程序用一個(gè)jnputs集合來(lái)保存當(dāng)前在form中生成的表單控件。首先根據(jù)自定義的parameter屬性創(chuàng)建表單控件:復(fù)制代碼代碼如下:for ( name in this.parameter) var in pu

15、t = form n ame;if ( !input) in put = document.createeleme nt(”i nput"); = name; input.type = "hidden”; form.appe ndchild(input);in put.value = this.parameter name;n ewlnputsname = in put;delete oldlnputsname;當(dāng)form中沒(méi)有對(duì)應(yīng)name的控件吋,會(huì)自動(dòng)生成一個(gè)hidden控件插入到form中。 其中newlnputs是用來(lái)記錄當(dāng)前生.成的控件的,而

16、oldlnputs就是jnputs集合。當(dāng)設(shè)置過(guò)對(duì)應(yīng)name的控件后,就從oldlnputs小刪除對(duì)應(yīng)控件的關(guān)聯(lián)。然后移除oldlnputs關(guān)聯(lián)的控件:for ( name in oldlnputs ) form.removechild( oldlnputsname);這樣就能移除上一次生成的無(wú)用的控件了。最后重新記錄當(dāng)前控件到nputs方便下次使用。stop如果想停止當(dāng)前上傳操作,可以調(diào)用stop方法。一般來(lái)說(shuō)當(dāng)iframe發(fā)生重載時(shí),會(huì)取消上一次的載入,那么只要重新設(shè)置src就能取消上傳 to測(cè)試以下代碼:復(fù)制代碼代碼如下:<body><iframe id="i

17、fr" name="ifr"x/iframe><form action=" target="ifr"></form></body><script>docum en t.forms0.submit();document.getelementbyld("ifr").src =</script>結(jié)果都能取消加載,除了 opera,未知什么原因。有兩個(gè)方法解決,一個(gè)是通過(guò)form隨便用一個(gè)action提交一次,還有就是直接移除iframeo 后一個(gè)方法比較方

18、便,程序屮用_removelframe方法直接移除iframeo ps:有更好方法的話記得告訴我。dispose當(dāng)使用結(jié)束或其他原因要銷毀程序時(shí),可以調(diào)用dispose方法。dispose里面主要做的是移除iframe和form。移除iframe用的是_removelframe方法,首先把onload移除,再把iframe從body移除:var iframe = this._iframe;$b.ie ? iframe.detachevent( "onload", this._ffinish ): (ifirame.onload = null);documentbodyrem

19、ovechild(iframe); this._iframe = null;十分簡(jiǎn)單,但在ff有一個(gè)問(wèn)題,測(cè)試以下代碼:復(fù)制代碼代碼如下:<form target="ifr" action="x"><input id="btn" type="submit" value="click"></form><iframe name=,ifrn id="ifr"x/iframe><script>document.getelem

20、 en tbyld(nbt nn).o nclick = fun ction()document.getelementbyldc 訐 rj.o nload = fun ction()this.pare ntnode.removechild(this);</script>提交后都能移除iframe,但ff還一直顯示“載入中”的狀態(tài)。不過(guò)解決方法也很簡(jiǎn)單,用settimeout設(shè)置一個(gè)延時(shí),讓iframe執(zhí)行完整就可以了。 所以在dispose中是這樣調(diào)用_removelframe的:復(fù)制代碼代碼如下:if ( $b.firefox ) settimeout($f.bind(this.

21、_removelframe? this), 0); else this._removelframe();至于form的移除就比較簡(jiǎn)單,在_removeform這樣處理:復(fù)制代碼代碼如下:var form = this._form, pare nt = form.parentnode;訐(parent) parent.insertbeforefthis.file, form); parent.removechild(form);this._form = this.jnputs = null;要判斷一下parentnode,否則如果parentnode不存在的話后面的會(huì)執(zhí)行岀錯(cuò)。file 的 re

22、set在實(shí)例里,有一個(gè)用來(lái)重置file控件的resetfile兩數(shù)。重置file控件一般的辦法是使所在的form執(zhí)行reset,但問(wèn)題是會(huì)把其他表單控件也重置了。 以前由于安全問(wèn)題,file的value是不允許修改的。但現(xiàn)在ff,chrome和safari可以把它設(shè)為空值來(lái)實(shí)現(xiàn)重置:file.value =當(dāng)然其他值還是不允許的。ps:記憶中以前是不行的,不知有沒(méi)有記錯(cuò)。對(duì)于opera,有一個(gè)變通的方法,利用它的type屈性:file.type = "text" file.type = "file"通過(guò)修改type得到的file控件,value會(huì)自動(dòng)還原

23、成空值,這樣就間接把file控件清空了。 ps:利用這個(gè)方法可以間接得到文件路徑,但由于變回去后值就清空了,所以沒(méi)什么用。而ie的表單控件的type設(shè)置后是不允許修改的,不能用opera的辦法。不過(guò)還是有以下方法解決:1,新建一個(gè)form,把file插進(jìn)入后reset,再移除:復(fù)制代碼代碼如下:with(file.parentnode.insertbefore(document.createelement('form'), file) appendchild(file); reset(); removenode(false);好處是使用原生的reset,穩(wěn)定可靠,但效率低。ps

24、: removenode只有ie和opera支持,如需兼容可改用removechild的方式。2, 利用outerhtml,重建一個(gè)file控件:file.outerhtml = file.outerhtml;好處是高效,但由于是新創(chuàng)建的file控件,之前關(guān)聯(lián)的東西都丟失了。ps: ff支持不支持outerhtmlo3, 利用clonenode,復(fù)制一個(gè)file控件:file.parentnode.replacechild(file.clonenode(false), file);跟上一個(gè)方法差不多,但效率更低。4, 利用select方法選中file控件的文本域,再進(jìn)行清空:file.sele

25、ct(); document.selection.clear();或file.select(); document.selection.clear();看來(lái)沒(méi)什么問(wèn)題,但file必須能被select (不能是隱藏狀態(tài))。ps:這兩個(gè)方法都只能在ie使用。由于程序屮file是需要關(guān)聯(lián)的,所以方法2和3都不能用。方法4貌似也不錯(cuò),但有一個(gè)致命問(wèn)題,在ie測(cè)試以下代碼:復(fù)制代碼代碼如下:<formxinput id="test" name="file" type="file"x/form><script>docume

26、 nt.getelementbyld("testh). on change = fun ction()this.select(); document.selection.clear();this.form.submito;</script>執(zhí)行到submit會(huì)顯示“拒絕訪問(wèn)”的錯(cuò)誤,原因不清楚,不知是ie故意的還是bug??磥?lái)也只能使用方法1 了:復(fù)制代碼代碼如下:function resetfile(file)file.value = ""/ff chrome safariif ( file.value ) if ( $b.ie ) /iewith(

27、file.parentnode.insertbefore(document.createelement('forrrt), file) appendchild(file); reset(); removenode(false); else /operafile.type = "text" file.type = "file" ps:有更好方法的話記得告訴我啊。這個(gè)函數(shù)并不夠通用,最好還是根據(jù)實(shí)際情況選擇需要的方法。使用技巧【上傳文件數(shù)】在文件上傳實(shí)例中,各個(gè)文件是同時(shí)上傳的。經(jīng)測(cè)試,瀏覽器能同吋上傳的文件數(shù)如下:ie2ff8opera 8chro

28、me 6safari 6由于ie最多同時(shí)只能傳2個(gè),所以設(shè)置更多文件也只能排隊(duì),而不能達(dá)到同時(shí)上傳的效果 的。ps:只是目測(cè)結(jié)果,有錯(cuò)請(qǐng)?zhí)岢?。【傳遞參數(shù)】上傳文件實(shí)例中,可以傳遞對(duì)應(yīng)的修改文件名,在使用“一般上傳”多個(gè)文件一起上傳時(shí)也 能找到對(duì)應(yīng)的文件名。因?yàn)楸韱慰丶祩鬟f到后臺(tái)后,獲取數(shù)據(jù)的順序跟前臺(tái)表單控件的排列順序是一致的。 只要保證前臺(tái)file控件跟對(duì)應(yīng)表單控件的排列順序一致就能利用這個(gè)特性獲取對(duì)應(yīng)的值了。 詳細(xì)參考后臺(tái)代碼?!净卣{(diào)函數(shù)】有兩個(gè)方法可以響應(yīng)上傳完成回調(diào)函數(shù)。一種是后臺(tái)上傳完成后,在訐rame輸出并執(zhí)行回調(diào)函數(shù)或通過(guò)parent調(diào)用父窗口的冋調(diào)函 數(shù)。這種比較方便,但必須

29、在iframe里面執(zhí)行處理,例如文件屬性查看實(shí)例。另一種是在iframe的onload中執(zhí)行回調(diào)函數(shù)。好處是可以把所有處理放在父窗口,iframe可以不做任何處理或用來(lái)反饋信息。缺點(diǎn)是有兼容性問(wèn)題,而且會(huì)有加載后沒(méi)有觸發(fā)onload的情況(上面的iframe部分有說(shuō)明)。 上傳文件實(shí)例中就是在onfinish中處理在iframe中輸出的數(shù)據(jù)。由于可能出現(xiàn)一些意外情況導(dǎo)致響應(yīng)很久,甚至沒(méi)有響應(yīng),所以一定要設(shè)置timeout以防萬(wàn)【處理返回?cái)?shù)據(jù)】上面提到,可以在onfinish中處理在iframe中輸出的數(shù)據(jù)。要從iframe的body中獲取數(shù)據(jù),有以下幾個(gè)方法:訐 rame.contentwin

30、dow.document.body.in nerhtmliframe.contentdbody.i nn erhtml window.framesiframe name.document, body.in nerhtml 其屮前兩種差不多,后者比較簡(jiǎn)便,但ie不支持contentdocument,可惜。 第三種是利用frames對(duì)象來(lái)獲取,注意這樣獲取的對(duì)象直接就是window對(duì)象。 由于程序能直接獲得iframe對(duì)象,所以用的是第一種方式。不過(guò)有一個(gè)問(wèn)題在iframe的部分也提過(guò),就是返回錯(cuò)誤信息頁(yè)面的問(wèn)題。 在上傳文件實(shí)例中,在iframe屮輸岀的是json形式的文件信息數(shù)據(jù)。在onfin

31、ish中是這樣處理的:復(fù)制代碼代碼如下:tryvar info = eval("(" + iframe.contentwindow.document.body.innerhtml + ")''); show(”上傳完成“);catch(e)show("上傳失敗”);stop(); return;只有返回正確的json格式數(shù)據(jù)才能正常運(yùn)行,否則就拋岀錯(cuò)誤,間接地排除了 404等錯(cuò)誤 信息。ps:有更好方法的話歡迎提出?!句N毀程序】程序屮有不少dom操作,在不需要繼續(xù)使用的時(shí)候最好執(zhí)行一次dispose方法來(lái)銷毀程序。 例如移除file之后,

32、關(guān)閉窗口之前,提交表單之前,歷遍表單元素前等等。既可以節(jié)省資源,防止dom的內(nèi)存泄漏,又能避免表單嵌套吋的沖突問(wèn)題。【可用性】看過(guò)“ppk談javascriptn后,更加注重了可用性。上傳實(shí)例在瀏覽器不支持js的情況下也能正常上傳,各位可以自行測(cè)試?!揪幋a】 上一個(gè)無(wú)刷新上傳系統(tǒng),很多人反映上傳后文件名亂碼,后來(lái)發(fā)現(xiàn)是編碼的問(wèn)題。當(dāng)有中文信息傳遞時(shí),要注意前后臺(tái)的編碼必須統(tǒng)一,包括charset,文件編碼,web.config 的配置等。asp版本】asp版本跟.net版本功能是一樣的,使用無(wú)組件上傳類。不過(guò)上傳類本身有一個(gè)缺陷導(dǎo)致提交同名file控件的話會(huì)出錯(cuò),經(jīng)過(guò)修改后現(xiàn)在可以正常使 用了

33、。使用說(shuō)明實(shí)例化時(shí),第一個(gè)必要參數(shù)是file控件對(duì)象:new quickupload(file);第二個(gè)可選參數(shù)用來(lái)設(shè)置系統(tǒng)的默認(rèn)屬性,包插 屬性:默認(rèn)值說(shuō)明parameter: ,參數(shù)對(duì)象 action:設(shè)置 action timeout: 0,/設(shè)置超時(shí)(秒為單位) onready: function(),/上傳準(zhǔn)備時(shí)執(zhí)行 onfinish: function(),上傳完成時(shí)執(zhí)行 onstop: function(),/上傳停止時(shí)執(zhí)行 ontimeout: function()/上傳超時(shí)時(shí)執(zhí)行還提供了以下方法: upload:執(zhí)行上傳操作; stop:停止上傳操作; dispose:銷毀程

34、序。程序源碼復(fù)制代碼代碼如下:var quickupload = function(file, options) this._sending = false;/ 是否正在上傳this._timer = null;/定時(shí)器this.frame = null;/訐rame 對(duì)彖this._form = null;/form 對(duì)象this._inputs = ;/input 對(duì)象this._ffinish = null;/完成執(zhí)行函數(shù)$.extend(this, this._setoptions(options);;quickupload._co un ter = 1;quickllpload.pr

35、ototype = 設(shè)置默認(rèn)屬性_setoptions: function(options) this.options = /默認(rèn)值action:"”丿/設(shè)置 actiontimeout: 0,/設(shè)置超時(shí)(秒為單位)parameter: ,/參數(shù)對(duì)象onready: function(),/上傳準(zhǔn)備時(shí)執(zhí)行onfinish: function(),上傳完成時(shí)執(zhí)行onstop: function(),/上傳停止時(shí)執(zhí)行ontimeout: function()/上傳超時(shí)時(shí)執(zhí)行;return $.extend(this.options, options 11 );,上傳文件upload: f

36、unction() 停止上一次上傳this.stop();沒(méi)有文件返回if ( !this.file 11 !this.file.value ) return;可能在onready中修改相關(guān)屬性所以放前面this.onready();設(shè)置iframe,form和表單控件this._setlframe();this._setform();this._setlnput();設(shè)置超時(shí)訐(this.timeout > 0 ) this._timer = settimeout( $f.bind(this._timeout, this), this.timeout * 1000 ); 開(kāi)始上傳thi

37、s._form.submit();this._sendi ng = true;,設(shè)置 iframe_setlframe: function() if ( !this._iframe ) 創(chuàng)建訐ramevar 訐ramename = "quickupload_" + quickllpload._counter+,iframe = document.createelement( $b.ie ? "<iframe name="" + iframename +: "iframe");iframe. name = iframen

38、ame;訐 rame.style.display = "none"記錄完成程序方便移除var finish = this._ffinish = $f.bind(this._finish/ this);/iframe加載完后執(zhí)行完成程序if($b.ie)if rame.attacheventf11 on load", finish ); else iframe.o nload = $b.opera ? function() this, on load = fin ish;: fin ish;插入bodyvar body = document.body; body.i

39、nsertbefore( iframe, body.childnodes0);this.frame = iframe;,設(shè)置form_setform: function() if ( !this._form ) var form = document.createelement('form'), file = this.file;設(shè)置屬性$.extend(form, target: , method: "post", encoding: "multipart/form-data");設(shè)置樣式$d.setsty

40、le(form, padding: 0, margin: 0, border: 0,backgroundcolor: "transparent”,display: "inline");提交前去掉formfile.form && $e.addevent(file.form, "submit", $f.bind(this.dispose, this);插入formfile.parentnode.insertbefore(form, file).appendchild(file);this, form = form;/action可能會(huì)修改this. form.action = this.action;,設(shè)置input_setlnput: function() var form = this._formz oldlnputs = this._inputs, newlnputs = , name; 設(shè)置inputfor ( name in this.parameter) var input = formname;訐(!input) 如果沒(méi)有對(duì)應(yīng)input新建一個(gè)in put = document.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論