|
- // -------------------------- 通用方法 ---------------------------
- //扩展js string endwith,startwith方法
- String.prototype.endWith = function (str) {
- if (str == null || str == "" || this.length == 0 || str.length > this.length)
- return false;
- if (this.substring(this.length - str.length) == str)
- return true;
- else
- return false;
- }
-
- String.prototype.startWith = function (str) {
- if (str == null || str == "" || this.length == 0 || str.length > this.length)
- return false;
- if (this.substr(0, str.length) == str)
- return true;
- else
- return false;
- }
-
- //UTF-16转UTF-8
- function utf16ToUtf8(s) {
- if (!s) {
- return;
- }
- var i, code, ret = [],
- len = s.length;
- for (i = 0; i < len; i++) {
- code = s.charCodeAt(i);
- if (code > 0x0 && code <= 0x7f) {
- //单字节
- //UTF-16 0000 - 007F
- //UTF-8 0xxxxxxx
- ret.push(s.charAt(i));
- } else if (code >= 0x80 && code <= 0x7ff) {
- //双字节
- //UTF-16 0080 - 07FF
- //UTF-8 110xxxxx 10xxxxxx
- ret.push(
- //110xxxxx
- String.fromCharCode(0xc0 | ((code >> 6) & 0x1f)),
- //10xxxxxx
- String.fromCharCode(0x80 | (code & 0x3f))
- );
- } else if (code >= 0x800 && code <= 0xffff) {
- //三字节
- //UTF-16 0800 - FFFF
- //UTF-8 1110xxxx 10xxxxxx 10xxxxxx
- ret.push(
- //1110xxxx
- String.fromCharCode(0xe0 | ((code >> 12) & 0xf)),
- //10xxxxxx
- String.fromCharCode(0x80 | ((code >> 6) & 0x3f)),
- //10xxxxxx
- String.fromCharCode(0x80 | (code & 0x3f))
- );
- }
- }
- return ret.join('');
- }
-
- //若要显示:当前日期加时间(如:200906121200)
- function currentTime() {
- var now = new Date();
-
- var year = now.getFullYear(); //年
- var month = now.getMonth() + 1; //月
- var day = now.getDate(); //日
-
- var hh = now.getHours(); //时
- var mm = now.getMinutes(); //分
-
- var clock = year + "";
-
- if (month < 10)
- clock += "0";
-
- clock += month + "";
-
- if (day < 10)
- clock += "0";
-
- clock += day + "";
-
- if (hh < 10)
- clock += "0";
-
- clock += hh + "";
- if (mm < 10) clock += '0';
- clock += mm;
- return (clock);
- }
-
- /**
- * 判断文件个数是否为0,若为0则关闭
- * @param {*} name
- */
- function closeEtIfNoDocument() {
- var etApp = wps.EtApplication();
- var docs = etApp.Workbooks;
- if (docs && docs.Count == 0) {
- etApp.Quit();
- }
- }
-
- function activeTab() {
- wps.ribbonUI.ActivateTab('WPSWorkExtTab');
- }
-
- function showOATab() {
- wps.PluginStorage.setItem("ShowOATabDocActive", pCheckIfOADoc()); //根据文件是否为OA文件来显示OA菜单
- wps.ribbonUI.Invalidate(); // 刷新Ribbon自定义按钮的状态
- }
-
- function pGetParamName(data, attr) {
- var start = data.indexOf(attr);
- data = data.substring(start + attr.length);
- return data;
- }
-
- /**
- * 从requst中获取文件名(确保请求中有filename这个参数)
- * @param {*} request
- * @param {*} url
- */
- function pGetFileName(request, url) {
- var disposition = request.getResponseHeader("Content-Disposition");
- var filename = "";
- if (disposition) {
- var matchs = pGetParamName(disposition, "filename=");
- if (matchs) {
- filename = decodeURIComponent(matchs);
- } else {
- filename = "petro" + Date.getTime();
- }
- } else {
- filename = url.substring(url.lastIndexOf("/") + 1);
- filename=filename.split("?")[0]
- }
- return filename;
- }
-
- function StringToUint8Array(string) {
- var binLen, buffer, chars, i, _i;
- binLen = string.length;
- buffer = new ArrayBuffer(binLen);
- chars = new Uint8Array(buffer);
- for (var i = 0; i < binLen; ++i) {
- chars[i] = String.prototype.charCodeAt.call(string, i);
- }
- return buffer;
- }
-
- function DownloadFile(url, callback) {
- // 需要根据业务实现一套
- var xhr = new XMLHttpRequest();
- xhr.onreadystatechange = function () {
- if (this.readyState == 4 && this.status == 200) {
- var path = wps.Env.GetTempPath() + "/" + pGetFileName(xhr, url);
- var reader = new FileReader();
- reader.onload = function () {
- wps.FileSystem.writeAsBinaryString(path, reader.result);
- callback(path);
- };
- reader.readAsBinaryString(xhr.response);
- }
- }
- xhr.open('GET', url);
- xhr.responseType = 'blob';
- xhr.send();
- }
-
- function UploadFile(strFileName, strPath, uploadPath, strFieldName, OnSuccess, OnFail) {
- var xhr = new XMLHttpRequest();
- xhr.open('POST', uploadPath);
-
- function KFormData() {
- this.fake = true;
- this.boundary = "--------FormData" + Math.random();
- this._fields = [];
- }
- KFormData.prototype.append = function (key, value) {
- this._fields.push([key, value]);
- }
- KFormData.prototype.toString = function () {
- var boundary = this.boundary;
- var body = "";
- this._fields.forEach(function (field) {
- body += "--" + boundary + "\r\n";
- if (field[1].name) {
- var file = field[1];
- body += "Content-Disposition: form-data; name=\"" + field[0] + "\"; filename=\"" + file.name + "\"\r\n";
- body += "Content-Type: " + file.type + "\r\n\r\n";
- body += file.getAsBinary() + "\r\n";
- } else {
- body += "Content-Disposition: form-data; name=\"" + field[0] + "\";\r\n\r\n";
- body += field[1] + "\r\n";
- }
- });
- body += "--" + boundary + "--";
- return body;
- }
- var fileData = wps.FileSystem.readAsBinaryString(strPath);
- var data = new KFormData();
- data.append('file', {
- name: strFileName,
- type: "application/octet-stream",
- getAsBinary: function () {
- return fileData;
- }
- });
- xhr.onreadystatechange = function () {
- if (xhr.readyState == 4) {
- if (xhr.status == 200)
- OnSuccess(xhr.response)
- else
- OnFail(xhr.response);
- }
- };
- xhr.setRequestHeader("Cache-Control", "no-cache");
- xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
- if (data.fake) {
- xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + data.boundary);
- var arr = StringToUint8Array(data.toString());
- xhr.send(arr);
- } else {
- xhr.send(data);
- }
- }
|