主要为js操作,因整体框架为dojo,顾少部分设计dojo关键字。需要HTML5支持。
需要一个隐藏的<input>标签
<input data-dojo-attach-point="fileSelectNode" type="file" accept=".txt" style="visibility: hidden"/>
js中控制,检查浏览器是否支持File Api,为创建的file input标签添加change事件监听
_openFile: function () { /// <summary> /// 打开txt文件 /// </summary> //检查浏览器是否支持File Api提供的所有功能,如果你只需要部分功能,可以省略其它部分的检查. if (window.File && window.FileReader && window.FileList && window.Blob){ //全部支持 } else { alert('该浏览器不全部支持File APIs的功能'); return; } dojo.byId(this.fileSelectNode).addEventListener("change",lang.hitch(this,this._onFileSelectChanged)); dojo.byId(this.fileSelectNode).click(); }
监听函数
_onFileSelectChanged: function () { /// <summary> /// 当<input type="file">文件变化时事件 /// </summary> if(dojo.byId(this.fileSelectNode).value == "") { return; } var reader = new FileReader(); reader.onload = lang.hitch(this,function(e){ var arr = e.target.result.split('\r\n'); //txt中的内容在e.target.result中 }); var temp = dojo.byId(this.fileSelectNode).files[0]; reader.readAsText(temp); dojo.byId(this.fileSelectNode).value = ""; },
如上代码,在file input的标签中添加FileReader,创建FileReader.onload事件,事件中即可获得txt文件中内容。