Common.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616
  1. /*
  2. 此函数区域用于常用的通用函数 如位置 大小 计时器等
  3. */
  4. Namespace.register("U.UF.C");
  5. //#region 通用函数区域
  6. /**
  7. * 浏览器全屏
  8. *
  9. */
  10. U.UF.C.fullScreen = function () {
  11. var _funcname = U.UF.C.getFullSreeenName("requestFullScreen"); //全屏函数名
  12. if (_funcname != null) {
  13. document[_funcname] ? document[_funcname]() : document.documentElement[_funcname](); //执行全屏函数
  14. }
  15. }
  16. /**
  17. * 退出浏览器全屏
  18. *
  19. */
  20. U.UF.C.cancelfullScreen = function () {
  21. var _funcname = U.UF.C.getFullSreeenName("cancelFullScreen") || U.UF.C.getFullSreeenName("exitFullScreen"); //全屏函数名
  22. if (_funcname != null) {
  23. document[_funcname] ? document[_funcname]() : document.documentElement[_funcname](); //执行退出全屏函数
  24. }
  25. }
  26. /**
  27. * 根据函数名获取浏览器兼容名字
  28. ** @return {string} 全屏功能的函数名
  29. */
  30. U.UF.C.getFullSreeenName = function (funcname) {
  31. var i, _functionname;
  32. //各个浏览器的全屏函数名称是不一样的,用数组把各个全屏函数包装起来。
  33. //注:各个浏览器全屏函数名如数组: _full = ["requestFullscreen", "mozRequestFullScreen", "webkitRequestFullscreen", "msRequestFullscreen", "oRequestFullscreen"];
  34. //各个浏览器还有不同的取消全屏,退出全屏功能"cancelFullScreen","exitFullScreenU.UF.C.getBriefText"
  35. var _full = ["", "webkit", "moz", "ms", "o"]; //所有浏览器的兼容字符串集
  36. for (i = 0; i < _full.length; i++) {
  37. if (_full[i]) {
  38. _functionname = _full[i] + funcname.capitalizeFirstLetter();
  39. }
  40. else {
  41. _functionname = funcname;
  42. }
  43. //判断拼接的浏览器兼容函数名在文档中是否存在。存在则返回函数,不存在返回null。
  44. if (_functionname in document.documentElement || _functionname in document) {
  45. return _functionname;
  46. }
  47. }
  48. return null;
  49. }
  50. /**
  51. * 对象转化成数组
  52. *
  53. * @param {object} 需要转换成数组的对象
  54. * @return {string} 指定事件是否在捕获或冒泡阶段执行
  55. */
  56. U.UF.C.toArray = function (obj) {
  57. try {
  58. return Array.prototype.slice.call(obj);
  59. }
  60. catch (e) {
  61. var i = 0,
  62. _arr = []; //循环创建
  63. for (; obj[i]; i++) {
  64. _arr.push(obj[i]);
  65. }
  66. return _arr;
  67. }
  68. }
  69. /**
  70. * 统一处理函数,解决闭包添加事件的问题
  71. * 使用apply,把事件与属性添加到对象上,而不是添加到window顶级对象。使用apply而不是call,是因为apply第二个参数可以传递参数数组,代码更少。
  72. * 调用方法 U.UF.C.apply(this,'执行函数的事件') 例如 U.UF.C.apply(this,'this.style.display="none"');
  73. *
  74. * @param {object} 将要绑定事件与属性的对象,如没有,可以传递null或者this,此处还需要优化,很多地方都会调用此函数,会导致速度降低。
  75. * @param {object} 函数与参数组成的数组。
  76. 案例:U.FC.C.apply(this,function(){}); //this用dialog做案例.
  77. 案例: U.FC.C.apply(element,function(){});
  78. 案例:U.FC.C.apply(element,function(){
  79. //执行其他函数
  80. });
  81. */
  82. U.UF.C.apply = function (scope, fun) {
  83. //返回一个在指定域下执行的函数
  84. return function () {
  85. fun.call(scope || this);
  86. }
  87. }
  88. /*
  89. 解决给元素循环赋予事件及闭包的问题函数名称为:U.FC.C.closure
  90. 案例:U.FC.C.apply(element,function(){
  91. //执行其他函数
  92. });
  93. //不用闭包的解决方法。
  94. //当给元素循环赋予事件时,为了解决事件始终聚焦在最后一个元素的问题,可以采用闭包的写法,但毕竟复杂。
  95. for(var i = 0;i<100;i++){
  96. //使用闭包的写法
  97. div[i].onclick=clickfun(i,div[i]);
  98. }
  99. function clickfun(j,el){
  100. return function(){
  101. el.style.backgroudcolor = '#000';
  102. }
  103. }
  104. //当给元素循环赋予事件时,为了解决事件始终聚焦在最后一个元素的问题,可以采用闭包的写法,但毕竟复杂。
  105. for(var i = 0;i<100;i++){
  106. //使用闭包的写法
  107. div[i].onclick=function(j,el){
  108. return function(){
  109. div[j].style.backgroudcolor = '#000';
  110. }
  111. }(i,div[i]);
  112. }
  113. //为了解决此问题,优化方案如下:
  114. for(var i = 0;i<100;i++){
  115. div[i].onclick = U.FC.C.apply(i,div[i],clickfun);
  116. }
  117. function clickfun(j,el){
  118. el.style.backgroudcolor = '#000';
  119. }
  120. */
  121. U.UF.C.closure = function (fun, parms) {
  122. //创建一个函数返回
  123. return function () {
  124. return fun.apply(this, parms)
  125. }
  126. }
  127. /**
  128. * 获取 rgb颜色值
  129. *
  130. * @param {array} 进行操作的对象
  131. * @return {string} 确定循环范围
  132. */
  133. U.UF.C.getColorByRGB = function (style) {
  134. var i, //循环初始化
  135. _color = "#", //rgb颜色前缀
  136. _grbarr = style.match(U.UF.S.rgb); //判断颜色是不是rgb值
  137. //如果是rgb那么转化成#nnnnnn的值
  138. if (_grbarr) {
  139. for (i = 1; i < _grbarr.length; i++) {
  140. _color += ("0" + _grbarr[i].toInt().toString(16)).slice(-2); //转换的方式
  141. }
  142. return _color;
  143. }
  144. return style;
  145. }
  146. /**
  147. * 获取url参数
  148. *
  149. * @param {string} QueryString key
  150. * @param {string} QueryString 默认为window.document.location.search ,可以自己选择字符串进行拆分
  151. * @return {string} 获取key对应的值
  152. */
  153. U.UF.C.queryString = function (key, search) {
  154. var _search = (search || window.document.location.search).substr(1);
  155. var i, j,
  156. _return = "",
  157. _valuearr, //网页传参 key和value组成的数组
  158. _arr = _search.split("&"); //生成传参数组
  159. for (i = 0; i < _arr.length; i++) { //循环传参数组获取值
  160. _valuearr = _arr[i].split("="); //把网页传参拆分
  161. if (_valuearr[0].toUpperCase() == key.toUpperCase()) { //判断key是否相等
  162. for (j = 1; j < _valuearr.length; j++) { //返回值
  163. _return += _valuearr[j] + (j == _valuearr.length - 1 ? "" : "="); //拼接返回值
  164. }
  165. break;
  166. }
  167. }
  168. return _return;
  169. }
  170. /**
  171. * 获取地址hash
  172. *
  173. */
  174. U.UF.C.getUrlHash = function () {
  175. var _hash = document.location.hash; //地址传参
  176. return _hash.split("/");
  177. }
  178. /**
  179. * 判断Url是否合法
  180. *
  181. * @param {string} url值
  182. * @return {boolean} 是否盒饭的url
  183. */
  184. U.UF.C.isUrl = function (str) {
  185. //获取参数
  186. var _str = str;
  187. //正则表达式字符串
  188. var _String = /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/;
  189. //new 一个正则表达式
  190. var _objExp = new RegExp(_String);
  191. //正则表达式判断是否有http等合法标识
  192. if (_objExp.test(str) == true) {
  193. return true;
  194. } else {
  195. return false;
  196. }
  197. }
  198. /**
  199. * 设置iframe同一个域,创建空iframe,在iframe中设置域名,等待iframe加载完回调。
  200. *
  201. * @param {element} iframe
  202. * @param {string} 写入iframe的值
  203. * @param {function} 成功的回调函数
  204. * @return {element} 返回iframe
  205. */
  206. U.UF.C.iframeSameDomain = function (iframe, htmlstr, cb) {
  207. //iframe设置onload事件的回调
  208. U.UF.DL.iframeLoad(iframe, function () {
  209. if (htmlstr) {
  210. iframe.contentWindow.document.body.innerHTML = htmlstr;
  211. }
  212. if (cb) {
  213. cb();
  214. }
  215. });
  216. //设置iframe的链接,这里设置的是空链接(空连接分为两种,一种是带domain有域名的,这种创建需要创建一个带域名的,第二种是没有域名的比如localhost或者f://1.html打开的页面)
  217. iframe.src = document.domain ? "javascript:void((function(){document.open();document.domain='" + document.domain + "';document.close()})())" : "about:blank"; //添加链接 "about:blank";
  218. return iframe;
  219. }
  220. /**
  221. * url中文加密,用于ajax
  222. *
  223. * @param {array} 需要加密的字符串数组 这个为url加密
  224. * @return {array} 返回加密成功的url数组
  225. */
  226. U.UF.C.urlEncode = function (arr) {
  227. var i; //循环初始化
  228. for (i = 0; i < arr.length; i++) {
  229. arr[i] = encodeURIComponent(encodeURIComponent(arr[i]));
  230. }
  231. return arr.join(",");
  232. }
  233. /**
  234. * 文字复制
  235. *
  236. */
  237. U.UF.C.copy = function () {
  238. if (window.clipboardData) { //ie
  239. window.clipboardData.setData("text", copystr);
  240. }
  241. else if (event && event.clipboardData) {//html5兼容
  242. event.clipboardData.setData("text/HTML", copystr);
  243. }
  244. else if (event && event.originalEvent && event.originalEvent.clipboardData) { //firfox兼容
  245. event.originalEvent.clipboardData("Text", copystr);
  246. }
  247. else if (document.execCommand) { //基本全兼容除了手机端的safari
  248. document.execCommand("copy");
  249. return document.execCommand("copy");
  250. }
  251. else {
  252. U.alert("请手动选择复制");
  253. }
  254. }
  255. /**
  256. * 文字粘贴剪贴板
  257. *
  258. */
  259. U.UF.C.pasteText = function () {
  260. if (window.clipboardData) { //ie
  261. return window.clipboardData.getData("text");
  262. }
  263. else if (event.clipboardData) { //html5
  264. var _str = event.clipboardData.getData("text/HTML"); //获取带html的文本
  265. if (!_str) { //如果文本不存在,则通过纯文本获取
  266. _str = event.clipboardData.getData("text/plain").replaceAngleBrackets(); //从文本处理
  267. }
  268. return _str;
  269. }
  270. else if (event && event.originalEvent && event.originalEvent.clipboardData) { //firfox兼容
  271. return event.originalEvent.clipboardData("Text")
  272. }
  273. else if (document.execCommand) { //基本全兼容除了手机端的safari
  274. if (document.execCommand("paste") == true) {
  275. document.execCommand("paste");
  276. return document.execCommand("paste");
  277. } else {
  278. U.alert && U.alert("无法粘贴");
  279. return false;
  280. }
  281. }
  282. else {
  283. U.alert && U.alert("无法粘贴");
  284. }
  285. }
  286. /*
  287. **作用:对元素在点击右键或者左键的时候,制定的菜单元素定位到鼠标点击的附近。
  288. **@param {element} el 需要定位的右键菜单元素
  289. */
  290. U.UF.C.rightClickMenuLocation = function (el) {
  291. //获取鼠标当前位置
  292. var _e = event || window.event, //获取事件源
  293. _elementposition = U.UF.EL.getElementPosition(el), //获取元素的位置
  294. _getmousex = _e.clientX - _elementposition[1], //获取鼠标的X坐标
  295. _getmousey = _e.clientY - _elementposition[0], //获取鼠标的Y坐标
  296. _eloffsetp = U.selectEl(el).Parent(), //获取需要定位的右键菜单元素的offsetParent
  297. _ellocationw = el.offsetWidth, //获取定位的右键菜单元素的offsetWidth属性
  298. _ellocationh = el.offsetHeight, //获取定位的右键菜单元素的offsetHeight属性
  299. _eloffsetpw = _eloffsetp.offsetWidth, //获取元素offsetParent的offsetWidth属性
  300. _eloffsetph = _eloffsetp.offsetHeight; //获取元素offsetparent的offsetHeight属性
  301. //判断top的最大范围
  302. if ((_ellocationw + _getmousex) > _eloffsetpw) {//如果定位元素的offsetWidth和鼠标X坐标的和大于元素offsetParent的offsetWidth
  303. _getmousex = _getmousex; // -_ellocationw; //则鼠标的X坐标为原先的鼠标X坐标减去定位元素的offsetWidth
  304. }
  305. else {
  306. _getmousex = _getmousex; //否则,鼠标的X坐标还是为原先的鼠标X坐标
  307. }
  308. //判断left的最大范围
  309. if ((_ellocationh + _getmousey) > _eloffsetph) {//如果定位元素的offsetHeight和鼠标X坐标的和大于元素offsetParent的offsetHeight
  310. _getmousey = _getmousey; // - _ellocationh; //则鼠标的Y坐标为原先的鼠标Y坐标减去定位元素的offsetHeight
  311. }
  312. else {
  313. _getmousey = _getmousey; //否则,鼠标的X坐标还是为原先的鼠标Y坐标
  314. }
  315. U.selectEl(el)[0].style.top = _getmousey + "px"; //添加右键菜单的top坐标
  316. U.selectEl(el)[0].style.left = _getmousex + "px"; //添加右键菜单的left坐标
  317. console.log('xzda');
  318. }
  319. /**
  320. * 序列化json为字符串
  321. *
  322. * @param {object 、 array} 需要序列化对象
  323. * @returns {string} json为字符串
  324. 注释:在写api时需要获取数据库返回值并转化为可识别字符串时经常用到。可精简名字,写成好的api
  325. */
  326. U.UF.C.jsonToStr = function (o) {
  327. var r = [];
  328. if (typeof o == "string") {
  329. return "\"" + o.replace(/([\'\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\"";
  330. }
  331. if (typeof o == "object") {
  332. if (!o.sort) {
  333. for (var i in o) {
  334. r.push(i + ":" + U.UF.C.jsonToStr(o[i]));
  335. }
  336. if (!!document.all && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString)) {
  337. r.push("toString:" + o.toString.toString());
  338. }
  339. r = "{" + r.join() + "}";
  340. }
  341. else {
  342. for (var i = 0; i < o.length; i++) {
  343. r.push(U.UF.C.jsonToStr(o[i]));
  344. }
  345. r = "[" + r.join() + "]";
  346. }
  347. return r;
  348. }
  349. if (o == null) {
  350. return "null";
  351. }
  352. else { return o.toString(); }
  353. }
  354. /**
  355. * 返回制定的对象类型名
  356. *
  357. * @param {object} 需要判断的对象
  358. * @return {string} 返回object转化后的的
  359. */
  360. U.UF.C.objectToString = function (obj) {
  361. return Object.prototype.toString.call(obj);
  362. }
  363. /**
  364. * 监听用户是否断网
  365. *
  366. * @param {function} 需要判断的对象
  367. * @return {boolean} 是否联网
  368. */
  369. //U.UF.C.monitorInternet = function (fun) {
  370. // window.addEventListener("online", fun);
  371. // window.addEventListener("offline", fun);
  372. //}
  373. /**
  374. * 错误函数控制台处理,,,解决ie的问题
  375. *
  376. * @param {string} 输入控制台的类型 默认log
  377. * @return {object} 输出控制台的值
  378. */
  379. U.UF.C.console = function (err) {
  380. try {
  381. // console.log(err);
  382. return;
  383. }
  384. catch (e) { }
  385. }
  386. /**
  387. * html加载,存储一篇文章,javascritp可以放在任何地方,当把文章追加到div等元素中时,由于没有刷新,导致javascript不能执行。需要把javascript重新移动到head头部才会加载。
  388. *
  389. * @param {element} 任何html元素
  390. * @param {string} 文章内容
  391. @return 返回文章内容
  392. */
  393. U.UF.C.loadJs = function (el, htmlstr) {
  394. if (htmlstr != null) {
  395. el.innerHTML = htmlstr;
  396. }
  397. var i, //循环初始化
  398. _head = U.selectEl("head"),
  399. _scripts = U.selectEl("script", el); //获取script标签
  400. //循环把js的标签写入
  401. for (i = 0; i < _scripts.length; i++) {
  402. //uform.js就不重新加载了,因为可以调用到该函数说明uform.js还能正常使用
  403. if (_scripts[i].src) {
  404. U.UF.DL.asynLoadJs({ "src": _scripts[i].src });
  405. } else {
  406. //追加元素
  407. $$("script", { "type": _scripts[i].type || 'text/javascript' }, _head[0]).text = _scripts[i].text;
  408. }
  409. }
  410. return htmlstr;
  411. }
  412. /**
  413. *
  414. *
  415. * @param {element} 任何html元素
  416. * @param {string} 文章内容
  417. */
  418. U.UF.C.toJson = function (str) {
  419. var i,
  420. _json = str; //转化成字符串
  421. //如果传进来的值是字符串那么就转化成json
  422. if (U.UF.C.isString(str)) {
  423. _json = str.parseJSON();
  424. }
  425. if (Array.isArray(_json)) {
  426. //如果转成的json是arrayjson那么循环,看看有没有需要转化成json值得
  427. for (i = 0; i < _json.length; i++) {
  428. if (U.UF.C.isString(_json[i])) { //如果下标还是字符串的话,需要继续转化
  429. _json[i] = _json[i].parseJSON(); //字符串转化成json处理
  430. }
  431. else if (Array.isArray(_json[i])) { //如果是数组的处理
  432. U.UF.C.toJson(_json[i]);
  433. }
  434. }
  435. }
  436. //返回数据
  437. return _json;
  438. }
  439. /**
  440. * 获取文字简写
  441. *
  442. * @param {element、 string} 传入的对象或者文字
  443. * @param {number} 截图的长度
  444. * @param {string} 后缀的添加
  445. */
  446. U.UF.C.getBriefText = function (el, length, str) {
  447. if (el.length > length) {
  448. var _el = U.UF.C.isString(el) ? $$("div", { "innerHTML": el }) : el; //截取的对象
  449. var _length = length || 200; //截取的长度
  450. var _str = str || ""; //省略号
  451. var _biretext = _el.innerText.substring(0, _length) + (_el.innerText._length > 200 ? _str : "") + str; //得到缩写加省略号
  452. return _biretext;
  453. }
  454. return el;
  455. }
  456. /**
  457. * 禁止元素选择文字
  458. *
  459. */
  460. U.UF.C.shieldedSelect = function () {
  461. var _editel = U.UF.EL.getAncestorEditElement(event.srcElement); //获取一个可编辑元素
  462. //如果是可编辑元素,那么不禁止元素可选择
  463. if (_editel && (_editel.nodeType == 3 || _editel.contentEditable == "true" ||
  464. "textarea,input".indexOf(_editel.tagName.toLocaleLowerCase()))) {
  465. return true;
  466. }
  467. U.UF.EV.stopBubble(); //取消冒泡
  468. U.UF.EV.stopDefault(); //取消浏览器默认行为
  469. return false; //禁止右键菜单
  470. }
  471. /**
  472. * 禁止页面点击backspace键的时候整个网页回退
  473. *
  474. */
  475. U.UF.C.shieldedBackspace = function () {
  476. if (event.keyCode == 8) { //不允许按下后台键
  477. //如果按下回车键的区域不在可编辑区内,那么可能会发生网页回退,这里判断如果非可编辑区域,直接阻止出发backspace
  478. if (U.UF.EL.getAncestorEditElement((event.srcElement)) == document.body && !document.body.isContentEditable) {
  479. U.UF.EV.stopDefault();
  480. }
  481. }
  482. }
  483. /**
  484. * 判断是否为对象
  485. *
  486. * @param {object} 判断对象是否为object对象
  487. * @return {boolean} 是否为FormData
  488. */
  489. U.UF.C.isObject = function (obj) {
  490. return (typeof obj == "object" && obj !== null);
  491. }
  492. /**
  493. * 判断是否为数字
  494. *
  495. * @param {array} 判断数组是否有值
  496. * @return {boolean} 是否为number
  497. */
  498. U.UF.C.isNumber = function (obj) {
  499. return typeof obj == "number";
  500. }
  501. /**
  502. * 判断是否为字符串
  503. *
  504. * @param {string} 判断的字符串
  505. * @return {boolean} 是否为字符串
  506. */
  507. U.UF.C.isString = function (str) {
  508. return typeof str == "string"
  509. }
  510. /**
  511. * 判断是否为函数类型
  512. *
  513. * @param {function} 函数值
  514. * @return {boolean} 函数对象值
  515. */
  516. U.UF.C.isFunction = function (fun) {
  517. var _isfun = typeof fun == "function"; //直接通过类型判断是否为函数
  518. var _isobjfun = U.UF.C.objectToString(fun) == "[object Function]"; //通过对象名判断是否为函数
  519. return _isfun || _isobjfun; //只要二者符合其一即为函数 且返回判断结果
  520. }
  521. /**
  522. * 判断是否为元素,用于在窗体中判断用户传入的是字符串还是元素
  523. *
  524. * @param {element} 元素
  525. * @return {boolean} 返回是否为元素 同时不为文本元素
  526. */
  527. U.UF.C.isElement = function (el) {
  528. return el != null && el.nodeType != null;
  529. }
  530. /**
  531. * 该函数存在问题 但由于多处使用暂不删除
  532. * 函数的作用是给已有的集合添加新的属性。
  533. *说明:此函数代替U.Json中的Add方法,以避免调试难调,速度降低的问题
  534. * @param {object} U.UF.CD的自定义变量或者Array,Object等系统变量
  535. * @param {object} 属性的集合,形如:{ "domain": "1473.cn", "SystemId": 0}
  536. */
  537. U.UF.C.AddObj = function (obj1, obj2) {
  538. for (var i in obj2) {
  539. if (obj2.hasOwnProperty(i)) {
  540. obj1[i] = obj2[i];
  541. }
  542. }
  543. return obj2;
  544. }
  545. //计算文件大小,小于1024用B,大于1024用KB,大于1024*1024用MB,大于1024*1024*1024用GB
  546. //参数一: 整形,文件大小.
  547. //返回值:字符串,小于1024用B,大于1024用KB,大于1024*1024用MB,大于1024*1024*1024用GB
  548. U.UF.C.computeFileSize = function (size) {
  549. var _s; //返回的文件大小
  550. if (size > 1024) {
  551. if (size / 1024 > 1024) {
  552. if (size / (1024 * 1024) > 1024) {
  553. _s = (size / (1024 * 1024 * 1024)).toFixed(2) + 'GB'; //返回GB
  554. }
  555. else {
  556. _s = (size / (1024 * 1024)).toFixed(2) + 'MB'; //返回MB
  557. }
  558. }
  559. else {
  560. _s = (size / 1024).toFixed(2) + 'KB'; //返回KB
  561. }
  562. }
  563. else {
  564. _s = size.toFixed(2) + 'B'; //返回B
  565. }
  566. return _s;
  567. }
  568. /*移除危险标签*/
  569. U.UF.C.filterTag = function () {
  570. }