1/** 2 * rhhz.js ---ä»å软件å端æä»¶jséå 3 * tools{ 4 * subTextMax:ææ¬å 容æé¿åº¦è®¾ç½®æªå, 5 * menuView:æç §é¡µé¢è®¾ç½®è¿è¡é¡µé¢èå对åºé«äº® 6 * } 7 * function{ 8 * hasChinese:夿å½åå¯¹è±¡ä¸æ¯å¦å å«ä¸æå符, 9 * trim:è§£å³IE 对jquery Trimæ¹æ³çå ¼å®¹æ§, 10 * startWith:夿å½å对象æ¯å¦ä»¥å符å¼å§, 11 * endWith:夿å符串æ¯å¦ä»¥åç¬¦ç»æ, 12 * getFileUrl:è·åæ¬å°èµæºæä»¶çè·¯å¾, 13 * preImg:é¢è§æ¬å°å¾ç, 14 * getUrlParam:è·åURLåæ°å表, 15 * getRefSupIndex:è·ååèæç®å¼ç¨ç´¢å¼, 16 * isNull:å¤æå¯¹è±¡æ¯å¦ä¸ºç©º, 17 * formatDateToEn:å°æ¥æè½¬æ¢æè±ææ ¼å¼ 2016-1-1 --> 01 Jan 2016 18 * GetRandomNum:è·åéæºæ° 19 * dateStr:è·åç½é¡µé¡¶é¨æ¾ç¤ºéè¦çæ¥æä¿¡æ¯ åæ°ï¼type 1:䏿 2è±æ 3è±æç®å ï¼ 2017-1-11 ææä¸; Wednesday, 11 January, 2017 ;Jan 20th, Wednesday 20 * shareTools(type,obj):åäº«å·¥å ·ï¼qzone,sina,weixin,renren,google+,facebook,linkedin,twitter 21 * } 22 * 23 * @version v1.0 24 * @date 2016-09-30 25 */ 26 27+function ($) { 28 //设置å符串æªåé»è®¤åæ° 29 var subTextDefaluts = { 30 add_title: true, //é»è®¤æªååè®¾ç½®å ¨å 容title 31 trim: true,//é»è®¤æªååå»é¤é¦å°¾ç©ºåæ¢è¡ï¼æè§æ²¡å¥ç¨ï¼åé¢èèåæ¶ 32 content_type: 'html',//é»è®¤å¤çå 容为htmlæ ç¾ï¼å¦è®¾ç½®ä¸ºtext伿¸ é¤åææ ç¾ 33 keep_len: 10//é»è®¤æªåä¿ç10个å符ï¼å»ºè®®éç¨é ç½®æ¹å¼æè 卿 ç¾ä¸è®¾ç½® 34 }; 35 36 //设置èåé«äº®é»è®¤åæ° 37 var menuDefaults = { 38 defaultPage: 'index', //é»è®¤è·åä¸å°é¡µé¢ç´¢å¼ï¼è®¾ç½®ä¸ºé¦é¡µ 39 pageViewId: 'pageViewId', //页é¢ç´¢å¼åå¼ID 40 hightLightTag: 'li', //éè¦è®¾ç½®é«äº®çæ ç¾ 41 highLightClass: 'current', //å½å页éä¸é«äº®class 42 pageRelAttr: 'rel_page', //èåå表ä¸ç´¢å¼å±æ§æ è¯ 43 pageRelTag: 'li span' //èåå表ä¸ç´¢å¼å弿 ç¾ï¼é»è®¤åtext().trim(),pageRelTagåpageRelAtträ¸éè¦åæ¶åå¨ 44 } 45 46 $.fn.subTextMax = function (options) { 47 var opts = $.extend({}, subTextDefaluts, options); 48 return this.each(function () { 49 var keepindex = parseInt($(this).attr("keep_len") == undefined ? opts.keep_len : $(this).attr("keep_len"));//è¶ åºkeepå¼éè¦æªå 50 var contentHtml = $(this).html().replace(/ /ig, '').replace(/\s+/g, ' ').replace(/\t|\r|\n/g, "").replace('<sec> <b>', '<sec><b>').replace(/<br[ ]*[/]{0,1}>/g, "<br/>").trim(); 51 //var contentText = $(this).text().replace(/ /ig, '').replace(/\s+/g, ' ').replace(/\t|\r|\n/g,"").trim(); 52 var contentText = filterHTMLTag(contentHtml); 53 54 if (contentText.length > keepindex) { 55 //妿éè¦ï¼å¯å titleï¼titleä¸ºå ¨é¨ææ¬å 容 56 if (opts.add_title) { 57 if ($(this).attr("title") == '' || $(this).attr("title") == undefined) { 58 $(this).attr("title", contentText); 59 } 60 } 61 contentText = contentText.substr(0, keepindex); 62 if (opts.content_type == 'text') { 63 $(this).html(contentText + "..."); 64 } else { 65 //对HTMLæ ç¾å 容è¿è¡æªåå为å个æ¥éª¤1åå¨åææ ç¾ 2æç §textè¿è¡æªå 3对æªååçtextè¿è¡æ ç¾æå ¥ 4è¡¥å ¨æªéåæ ç¾ 66 //1.å¤çåææ ç¾ 67 //è·åå½åå 容ä¸çå个æ ç¾åæå¨ä½ç½® 68 var rgx = /<[^<^>]+>/; //æ ç¾å¹é æ£å 69 var index = 0; 70 var tags = new Array(); 71 while (rgx.test(contentHtml)) { 72 var t = new Object(); 73 //æ ç¾åºç°çä½ç½® 74 t.index = index + contentHtml.search(rgx); 75 //æ ç¾å 容 76 t.tag = contentHtml.match(rgx).toString();
77 //æ¯æ¬¡å¹é 第ä¸ä¸ªæ ç¾ï¼å¹é å®å 餿¤æ ç¾ï¼åæ¶ç´¢å¼ä½ç½®å å½åæ ç¾çé¿åº¦ 78 var len = contentHtml.search(/<[^<^>]+>/) + contentHtml.match(/<[^<^>]+>/)[0].length; 79 contentHtml = contentHtml.substr(len); 80 index += len; 81 tags.push(t); 82 } 83 //2.æªåtextå 容ï¼ä¸é¢å·²ç»æªåè¿äº 84 //3.å¡«å åææ ç¾ 85 if (tags.length > 0) { 86 $.each(tags, function (i, e) { 87 if (e.index > contentText.length) { 88 //妿å½åèç¹çå¼å§ä½ç½®å¤§äºå½åè¿åå符串çé¿åº¦åä¸åç»§ç»å¤æ 89 tags = tags.slice(0, i); 90 return false; 91 } else { 92 //å°åææ ç¾æå ¥åä½ç½® 93 contentText = contentText.substr(0, e.index) + e.tag + contentText.substr(e.index, contentText.length); 94 } 95 }) 96 } 97 //4.éåæ ç¾ 98 //è·åæªéåæ ç¾ï¼æ ç¾å¡«å æ¶ä¸éè¦å¡«å çæ ç¾é½è¢«sliceè¿æ»¤æäºï¼æä»¥å©ä¸ç齿¯å·²ç»å¨å 容ä¸çæ ç¾äºï¼éè¦è¿è¡å¤æéåå¤ç 99 var insertTags = new Array();//å·²æ£ç¡®æå ¥æ ç¾ 100 var uncloseTags = new Array();//æªéåæ ç¾ 101 if (tags.length > 0) { 102 $.each(tags, function (i, e) { 103 //å å°æææå ¥çæ ç¾æ¾å°æå ¥åæªéååè¡¨ä¸ 104 uncloseTags.push(e.tag); 105 insertTags.push(e.tag); 106 }) 107 $.each(insertTags, function (i, e) { 108 //èªéåæ ç¾ä¸éè¦è¡¥å ¨ï¼å é¤å¦<br/> 109 if (/<[^<^>^\/]+\/>/.test(e)) { 110 uncloseTags.splice($.inArray(e, uncloseTags), 1); 111 return true; 112 } 113 //对左æ ç¾è¿è¡éå夿ï¼å¦æåæ¶åå¨ä¸ç»å·¦å³æ ç¾ï¼ååæ¶å é¤å³å¯ï¼ç±äºæç»çå é¤ï¼æä»¥ä¸ç¨èèå¤ä¸ª<div>对åºä¸ä¸ª</div>çæ åµï¼æä»¬åªéè¦æç §é¡ºåºè·åå°æªéåçå表å³å¯ 114 if (/<[^<^>^\/]+>/.test(e)) { 115 var tagClosed = ""; 116 if (e.indexOf(" ") > 0) { 117 tagClosed = "</" + e.substring(1, e.indexOf(" ")) + ">"; 118 } else { 119 tagClosed = "</" + e.substring(1, e.length); 120 } 121 //åæ¶åå¨éåæ ç¾ 122 if ($.inArray(tagClosed, uncloseTags) != -1) { 123 uncloseTags.splice($.inArray(e, uncloseTags), 1); 124 uncloseTags.splice($.inArray(tagClosed, uncloseTags), 1); 125 } 126 } 127 }) 128 } 129 //æ¤æ¶uncloseTagså·²ç»æ¯æªéåçæ ç¾åè¡¨äº 130 //çæéåæ ç¾ï¼æ ¹æ®æ ç¾åµå¥è§åï¼å³æ ç¾åå·¦æ ç¾å¯¹åºï¼å¦<div><p> -- </p></div>ï¼æä»¥å å°æªéåæ ç¾æ°ç»éåº 131 if (uncloseTags.length > 0) { 132 var closeTagStr = ""; 133 uncloseTags.reverse(); 134 $.each(uncloseTags, function (i, e) { 135 if (e.indexOf(" ") > 0) { 136 closeTagStr += "</" + e.substring(1, e.indexOf(" ")) + ">"; 137 } else { 138 closeTagStr += "</" + e.substring(1, e.length); 139 } 140 }) 141 contentText += "..." + closeTagStr; 142 } else { 143 contentText += "..."; 144 } 145 //æ¼æ¥å®æ 146 $(this).html(contentText); 147 } 148 149 } 150 }) 151 } 152}(jQuery); 153 154/** 155 * èªå®ä¹å符串ç»å°¾å¤å®æ¹æ³ï¼ä»¥sç»å°¾è¿åtrueï¼å¦åè¿åfalse 156 * @param s 157 * @return 158 */ 159String.prototype.endsWith = function (s) { 160 if (s == null || s == "" || this.length == 0 || s.length > this.length) 161 return false; 162 if (this.substring(this.length - s.length) == s) 163 return true; 164 else 165 return false; 166 return true; 167} 168String.prototype.endWith = function (s) { 169 if (s == null || s == "" || this.length == 0 || s.length > this.length) 170 return false; 171 if (this.substring(this.length - s.length) == s) 172 return true; 173 else 174 return false; 175 return true; 176} 177 178/** 179 * èªå®ä¹å符串å¼å§å¤å®æ¹æ³ï¼ä»¥så¼å§è¿åtrueï¼å¦åè¿åfalse 180 * @param s 181 * @return 182 */ 183String.prototype.startsWith = function (s) { 184 if (s == null || s == "" || this.length == 0 || s.length > this.length) 185 return false; 186 if (this.substr(0, s.length) == s) 187 return true; 188 else 189 return false; 190 return true; 191} 192String.prototype.startWith = function (s) { 193 if (s == null || s == "" || this.length == 0 || s.length > this.length) 194 return false; 195 if (this.substr(0, s.length) == s) 196 return true; 197 else 198 return false; 199 return true; 200} 201 202/** 203 * IEæµè§å¨å ¼å®¹jquery trimæ¹æ³ 204 * @return 205 */ 206String.prototype.trim = function () { 207 return this.replace(/(^\s*)|(\s*$)/g, ""); 208} 209/** 210 * è·åå°åæ urlåæ° 211 * @param name 212 * @return 213 */ 214function getUrlParam(name) { 215 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); 216 var r = window.location.search.substr(1).match(reg); 217 if (r != null) return decodeURI(r[2]); return null; 218 //return $("#language").val(); 219} 220 221/** 222 * ä»åèæç®å¼ç¨ä¿¡æ¯ä¸æååèæç®ç´¢å¼ 223 * æ¯ææ ¼å¼"[1,3,5-8,11,13-18,19]" 224 * @param refSup 225 * @return 226 */ 227function getRefSupIndex(refSup) { 228 if (!isNull(refSup)) { 229 refSup = refSup.replace(/[\[|\]]/g, '').trim(); 230 var chars = ['~', 'â', 'â', 'ï¼', '-', 'â', 'â']; 231 $.each(chars, function (ind, val) { 232 var reg = new RegExp(val, "g"); 233 refSup = refSup.replace(reg, '&'); 234 }); 235 var refIndexs = []; 236 $.each(refSup.split(","), function (i, e) { 237 if (isNaN(e)) { 238 var startEnd = e.split("&"); 239 var start = parseInt(startEnd[0]); 240 var end = parseInt(startEnd[1]); 241 for (var i = start; i <= end; i++) { 242 refIndexs.push(i); 243 } 244 } else { 245 refIndexs.push(e); 246 } 247 }) 248 //alert(refIndexs); 249 return refIndexs; 250 } 251 return null; 252} 253 254/** 255 * å°è£ å¤æå¯¹è±¡ä¸ºç©ºæ¹æ³ 256 * @param object 257 * @return 258 */ 259function isNull(object) { 260 return typeof (object) == "undefined" || object == null || object == ""; 261} 262 263/** 264 * è·åéæºæ° 265 * @param Min 266 * @param Max 267 * @return 268 */ 269function GetRandomNum(Min, Max) { 270 var Range = Max - Min; 271 var Rand = Math.random(); 272 return (Min + Math.round(Rand * Range)); 273} 274 275/** 276 * è·åç½é¡µé¡¶é¨æ¾ç¤ºéè¦çæ¥æä¿¡æ¯ 277 * @param type 1:䏿 2è±æ 3è±æç®å 278 * 2017-1-11 ææä¸ 279 * Wednesday, 11 January, 2017 280 * Jan 20th, Wednesday 281 * @return 282 */ 283function dateStr(type) { 284 var date = new Date(); 285 return parseInt(type) == 1 ? 286 formatDate(date, type) + " " + getTodayWeek(type) : 287 getTodayWeek(type) + ", " + formatDate(date, type); 288} 289 290 291/** 292 * å°æ¥ææ ¼å¼åæè±ææ ¼å¼ 293 * 2017-1-11 294 * 11 January, 2017 295 * Jan 11, 2017 296 * @param date 297 * */ 298function formatDate(date, type) { 299 if (!isNull(date)) { 300 var dateStr = JSON.stringify(date).substring(1, 11); 301 var dateVal = dateStr.split("-");
302 var month = dateVal[1]; 303 if (month.charAt(0) == 0) { month = month.charAt(1); } 304 var monthArray = new Array 305 ("January", "February", "March", "April", "May", "June", "July", "August", 306 "September", "October", "November", "December"); 307 var monthArraySimple = new Array 308 ("Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", 309 "Sep", "Oct", "Nov", "Dec"); 310 switch (type) { 311 case 1: 312 return dateStr; 313 case 2: 314 return dateVal[2] + " " + monthArray[month - 1] + ", " + dateVal[0]; 315 case 3: 316 return monthArraySimple[month - 1] + " " + dateVal[2] + ", " + dateVal[0]; 317 } 318 } 319} 320 321/** 322 * è·åææå 323 * @param type 1:䏿 2è±æ 3è±æç®å 324 * @return 325 */ 326function getTodayWeek(type) { 327 var chinese = new Array("æææ¥", "ææä¸", "ææäº", "ææä¸", "ææå", "ææäº", "ææå "); 328 var english = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"); 329 var englishSigle = new Array("Sun.", "Mon.", "Tues.", "Wed.", "Thur.", "Fri.", "Sat."); 330 var week = new Date().getDay(); 331 switch (type) { 332 case 1: 333 return chinese[week]; 334 case 2: 335 return english[week]; 336 case 3: 337 return englishSigle[week]; 338 } 339} 340 341/** 342 * åäº«å·¥å ·æ¹æ³ 343 * @param type 344 * @return 345 */ 346function shareTools(type, obj) { 347 if (obj && obj.parents(".shareUrlTools").length) { 348 var url = window.location.protocol + "//" + window.location.host + obj.parents(".shareUrlTools").attr("data-url"); 349 var title = obj.parents(".shareUrlTools").attr("data-title"); 350 } else { 351 var url = window.location; 352 var title = $("head title").text(); 353 } 354 var description = $("meta[name='abstract']").attr("content") || $("meta[name='description']").attr("content") || $("meta[name='dc.description']").attr("content") || $("meta[http-equiv='description']").attr("content"); 355 var shareUrl = ""; 356 switch (type) { 357 case 'qzone': 358 shareUrl = "http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=" + url + "&title=" + title; 359 break; 360 case 'sina': 361 shareUrl = "http://service.weibo.com/share/share.php?title=" + title + "&url=" + url + "&pic="; 362 break; 363 case 'weixin': 364 shareUrl = basePath + "util/QrcodeServlet?url=" + url; 365 break; 366 case 'renren': 367 shareUrl = "http://widget.renren.com/dialog/share?resourceUrl=" + url + "&srcUrl=" + url + "&title=" + title + "&pic=&description=" + description; 368 break; 369 case 'google+': 370 shareUrl = "https://plus.google.com/share?url=" + url + "&t=" + title; 371 break; 372 case 'facebook': 373 shareUrl = "http://www.facebook.com/sharer.php?s=100&p[title]=" + title + "&p[summary]=" + description + "&p[url]=" + url + "&p[images]="; 374 break; 375 case 'linkedin': 376 shareUrl = "http://www.linkedin.com/shareArticle?armin=armin&ro=true&mini=true&url=" + url + "&source=&title=" + title + "&summary=" + description; 377 break; 378 case 'twitter': 379 shareUrl = "https://twitter.com/intent/tweet?text=" + title + "&url=" + url; 380 break; 381 default: 382 shareUrl = "http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=" + url + "&title=" + title; 383 break; 384 } 385 if ("weixin" == type) { 386 $(".weixinQrcode").attr("src", shareUrl); 387 } else { 388 window.open(shareUrl, "_blank"); 389 } 390} 391function closeWeiXinBox(obj) { 392 $(obj).parent().hide(); 393} 394 395//è¿æ»¤HTMLæ ç¾ 396function filterHTMLTag(str) { 397 if (!str) { 398 return str; 399 } else { 400 var msg = str.replace(/<\/?[^>]*>/g, ''); //å»é¤HTML Tag 401 msg = msg.replace(/[|]*\n/, ''); //å»é¤è¡å°¾ç©ºæ ¼ 402 msg = msg.replace(/ /ig, ''); //廿npsp 403 return msg; 404 } 405} 406 407//æ¥è¯¢æ¡ä»¶ç¸å ³æ¹æ³ 408function SearchCond(field, operator, value, dataType, relation, paramEntity, paramNameVo) { 409 this.dataType = dataType; 410 this.paramName = field; 411 this.operate = operator; 412 this.paramValue = value; 413 this.relation = relation; 414 this.paramEntity = paramEntity; 415 this.paramNameVo = paramNameVo; 416} 417 418function SearchTools_put(conds, searchCond) { 419 if (searchCond.paramValue != null && searchCond.paramValue != "") { 420 conds.push(searchCond); 421 } 422} 423 424function OrderByCond(field, value) { 425 this.dataType = ""; 426 this.paramName = field; 427 this.operate = ""; 428 this.paramValue = value; 429} 430 431function OrderTools_put(conds, orderByCond) { 432 if (orderByCond.paramValue != null && orderByCond.paramValue != "") { 433 conds.push(orderByCond); 434 } 435} 436 437function SearchCondition(field, operator, value, paramNameVo) { 438 this.searchField = field; 439 this.searchType = operator; 440 this.searchVal = value; 441 if (!isNull(paramNameVo)) { 442 this.searchFieldVo = paramNameVo; 443 } else { 444 this.searchFieldVo = field; 445 } 446} 447 448/** 449 * æ¡ä»¶æå»ºå¨ï¼ç¨äºç»åå¤ä¸ªæ¥è¯¢æ¡ä»¶ 450 * @class 451 * @param {string} [relationStr="and"] - æ¡ä»¶å ³ç³»ç±»åï¼"and" 表示é»è¾ä¸ï¼"or" 表示é»è¾æ 452 */ 453function ConditionBuilder(relationStr) { 454 this.relationStr = relationStr || "and"; 455 this.conditions = []; 456} 457 458/** 459 * æ·»å ä¸ä¸ªæ¡ä»¶æå»ºå¨ï¼å å«å¤ä¸ªæ¡ä»¶ï¼ 460 * @memberOf ConditionBuilder 461 * @instance 462 * @param {ConditionBuilder} cond2 - å¦ä¸ä¸ª ConditionBuilder å®ä¾ 463 * @returns {ConditionBuilder} è¿åå½åå®ä¾ï¼æ¯æé¾å¼è°ç¨ 464 */ 465ConditionBuilder.prototype.addConds = function (cond2) { 466 if (cond2.conditions.length > 0) { 467 this.conditions.push(cond2); 468 } 469 return this; 470};
471 472/** 473 * æ·»å å个æ¥è¯¢æ¡ä»¶ 474 * @memberOf ConditionBuilder 475 * @instance 476 * @param {Object} searchCond - æ¥è¯¢æ¡ä»¶å¯¹è±¡ 477 * @param {*} searchCond.searchVal - æç´¢å¼ï¼é null ä¸éç©ºæ¶ææ·»å 478 * @returns {ConditionBuilder} è¿åå½åå®ä¾ï¼æ¯æé¾å¼è°ç¨ 479 */ 480ConditionBuilder.prototype.addCond = function (searchCond) { 481 if (searchCond) { 482 if (searchCond.searchVal != null && searchCond.searchVal != "") { 483 this.conditions.push(searchCond); 484 } 485 } 486 return this; 487}; 488 489function isNull(object) { 490 return typeof (object) == "undefined" || object == null || object == ""; 491} 492 493/** 494 * å¤çå 容ä¸çxml龿¥æ ç¾ 495 * @param input å 容 496 * @returns {*} å¤çç»æ 497 */ 498function convertLink(input) { 499 var output = input; 500 output = output.replace(/<ext-link/g, "<a") 501 .replace(/<\/ext-link/g, "</a") 502 .replace(/xlink:href/g, "href") 503 .replace(/ext-link-type="uri"/g, "target=\"_blank\""); 504 505 return output; 506} 507 508/** 509 * æç´¢å¼è·åå 容ä¸çæ£åå¹é ç»æ 510 * @param source å 容 511 * @param regx æ£åè¡¨è¾¾å¼ 512 * @param index ç´¢å¼ 513 * @returns {*|string} ç´¢å¼ä½ç½®çæ£åå¹é ç»æ 514 */ 515function getMatcherByIndex(source, regx, index) { 516 517 var pattern = new RegExp(regx); 518 var list = source.match(pattern); 519 if (!isNull(list)) { 520 var result = list[index]; 521 if (!isNull(result)) { 522 return result; 523 } 524 } 525 526 return ""; 527} 528 529function isNull(object) { 530 return typeof (object) == "undefined" || object == null || object == ""; 531} 532 533/** 534 * å¤çå 容ä¸çxml龿¥æ ç¾ 535 * @param input å 容 536 * @returns {*} å¤çç»æ 537 */ 538function convertLink(input) { 539 var output = input; 540 output = output.replace(/<ext-link/g, "<a") 541 .replace(/<\/ext-link/g, "</a") 542 .replace(/xlink:href="([^"]*)"/g, "href=\"$1\"") 543 .replace(/ext-link-type="uri"/g, "target=\"_blank\""); 544 545 return output; 546} 547 548/** 549 * æ£åæ¿æ¢,replaceAllä¸å¥½ç¨,éåé»è¾ 550 * @param source æºå符串 551 * @param target æ¿æ¢ç»æ 552 * @param regx æ£åè¡¨è¾¾å¼ 553 * @returns {*} æ¿æ¢ç»æ 554 */ 555function replaceRegx(source, target, regx) { 556 var result = source; 557 var pattern = new RegExp(regx, 'g'); 558 var list = result.match(pattern); 559 if (!isNull(list)) 560 for (var i = 0; i < list.length; i++) { 561 var str = list[i]; 562 result = result.replace(str, target); 563 } 564 565 return result; 566} 567 568/** 569 * 夿å 容æ¯å¦å å«doi: 570 * @param context 571 * @returns {boolean} 572 */ 573function isContainsByDoi(context) { 574 if (!isNull(context)) { 575 var re = context.toUpperCase().replace(/ /g, ""); 576 return re.indexOf("DOI:") != -1; 577 } 578 return false; 579} 580 581/** 582 * å¤çå ¬å¼å 容 583 * @param sourceStr éè¦å¤ççå符串 584 * @returns {*|string|string} å¤çç»æ 585 */ 586function convertMathHtml(sourceStr) { 587 588 if (isNull(sourceStr)) return ""; 589 sourceStr = replaceRegx(sourceStr, "", "<[/]{0,1}multi_end[/]{0,1}>"); 590 sourceStr = replaceRegx(sourceStr, "", "<[/]{0,1}multi_start[/]{0,1}>"); 591 sourceStr = sourceStr.trim(); 592 sourceStr = sourceStr.replace(/jlmText/g, "text"); 593 594 //xdf20220615 å ¼å®¹mmlæ ¼å¼å ¬å¼,åé¤mml: 595 sourceStr = sourceStr.replace(/<mml:/g, "<").replace(/<\/mml:/g, "</").replace(/:mml/g, ""); 596 597 //xdf20220712 åé¤è¾åºæ°æ®ä¸çcdataæ ç¾ 598 sourceStr = sourceStr.replace(/<!\[CDATA\[/g, "").replace(/]]>/g, ""); 599 600 var tempStr = sourceStr; 601 if (sourceStr.indexOf("<disp-formula") != -1) { //ç¬ç«æ®µè½è¡å ¬å¼ 602 603 var imgSrc = ""; 604 //妿æ¯å ¬å¼å¾çï¼ç´æ¥å¾çè¾åº 605 if (sourceStr.indexOf("graphic ") != -1) { 606 imgSrc = getMatcherByIndex(sourceStr, "xlink:href=\"(.*?)\"", 1); 607 } 608 609 tempStr = replaceRegx(tempStr, "", "<label>.*?</label>"); 610 tempStr = replaceRegx(tempStr, "", "<disp-formula.*?>"); 611 tempStr = replaceRegx(tempStr, "", "<tex-math.*?>");
612 tempStr = replaceRegx(tempStr, "", "<graphic.*?>.*?</graphic>"); 613 tempStr = replaceRegx(tempStr, "", "<alternatives.*?>"); 614 tempStr = replaceRegx(tempStr, "", "<graphic.*?>"); 615 616 tempStr = tempStr.replace(/<label\/>/g, "") 617 .replace(/\\begin{document}/g, "").replace(/\\end{document}/g, "") 618 .replace(/\\begin{equation} \\begin{CJK}{GBK}{song}/g, "") 619 .replace(/\\end{CJK} \\end{equation}/g, "") 620 .replace(/<\/disp-formula>/g, "") 621 .replace(/<\/tex-math>/g, "") 622 .replace(/<\/alternatives>/g, "") 623 .replace(/<\/graphic>/g, "").trim(); 624 625 if (tempStr.startsWith("<p>") && tempStr.endsWith("</p>")) { 626 tempStr = replaceRegx(tempStr, "", "\r\n\t"); 627 tempStr = tempStr.replace(/<p>/g, "").replace(/<\/p>/g, "").trim(); 628 if (tempStr.startsWith("$") && !tempStr.startsWith("$$")) { 629 tempStr = "$" + tempStr + "$"; 630 } 631 } 632 //妿æ¯å ¬å¼å¾çï¼ç´æ¥å¾çè¾åº 633 if (sourceStr.indexOf("graphic ") !== -1) { 634 var result = ""; 635 if (sourceStr.indexOf("<tex-math") !== -1) {//å¦å 容å å«<tex-math,éèå¾ç 636 result = tempStr + "<p class='img-formula' style='display:none;'><img class='formula-img' src='" + imgSrc + "'></p>"; 637 } else { 638 result = tempStr + "<p class='img-formula'><img class='formula-img' src='" + imgSrc + "'></p>"; 639 } 640 result = convertLink(result); 641 return result; 642 } 643 } else if (sourceStr.indexOf("<tex-math") !== -1) { //éæ®µè½å ¬å¼ä¸å 容ä¸å å«å ¬å¼å为è¡å å ¬å¼ 644 //æ£åå¹é inline-formula,循ç¯å¤ç 645 var pattern = new RegExp("(<inline-formula[^>]*>[\\s\\S]*?</inline-formula>)", "g"); 646 647 var results = sourceStr.match(pattern); 648 if (results) { 649 for (var i = 0; i < results.length; i++) { 650 currentMath = results[i] 651 var imgSrc = getMatcherByIndex(currentMath, "xlink:href=\"(.*?)\"", 1); 652 var textMathStr = getMatcherByIndex(currentMath, "<tex-math.*?>([\\s\\S]*?)</tex-math?>", 0); 653 var textMath = textMathStr; 654 textMath = replaceRegx(textMath, "", "<tex-math.*?>"); 655 textMath = replaceRegx(textMath, "", "<inline-graphic>.*?</inline-graphic>"); 656 textMath = replaceRegx(textMath, "\\$", "\\$((\n)|[ ])*\\$"); 657 textMath = replaceRegx(textMath, "", "<inline-graphic.*?>.*?</inline-graphic>"); 658 textMath = replaceRegx(textMath, "", "<inline-graphic.*?>"); 659 textMath = replaceRegx(textMath, "", "</inline-graphic>"); 660 textMath = textMath.replace(/\\begin{document}/g, "$") 661 .replace(/\\end{document}/g, "$") 662 .replace(/\\begin{equation} \\begin{CJK}{GBK}{song}/g, "$") 663 .replace(/\\end{CJK} \\end{equation}/g, "$") 664 .replace(/<\/tex-math>/g, ""); 665 666 var mathId = getMatcherByIndex(currentMath, "<tex-math.*?id=\"(.*?)\">", 0); 667 mathId = replaceRegx(mathId, "", "<tex-math.*?id=\""); 668 mathId = replaceRegx(mathId, "", "\">"); 669 if (!isNull(imgSrc)) {//æå¾çæ¶å°å¾çéèåè¾åº 670 var imgTag = "<span class=\"inline-formula-span\">" + textMath 671 + "</span><img text_id='" + mathId + "' class='formula-img' style='display:none;' src='" + imgSrc + "'>"; 672 sourceStr = sourceStr.replaceAll(textMathStr, imgTag); 673 } else { 674 sourceStr = sourceStr.replaceAll(currentMath, textMath); 675 } 676 } 677 } 678 679 if (!isNull(sourceStr)) { 680 tempStr = sourceStr; 681 tempStr = replaceRegx(tempStr, "", "<label>.*?</label>"); 682 tempStr = tempStr.replace(/<label\/>/g, ""); 683 tempStr = tempStr.replace(/\\\\begin{equation} \\\\begin{CJK}{GBK}{song}/g, "") 684 .replace(/\\\\end{CJK} \\\\end{equation}/g, ""); 685 tempStr = replaceRegx(tempStr, "", "<disp-formula.*?>"); 686 tempStr = tempStr.replace(/<\/disp-formula>/g, ""); 687 tempStr = replaceRegx(tempStr, "", "<tex-math.*?>"); 688 tempStr = tempStr.replace(/<\/tex-math>/g, ""); 689 if (tempStr.indexOf("</graphic>") != -1) {
690 tempStr = replaceRegx(tempStr, "", "<graphic.*?>.*?</graphic>"); 691 } 692 tempStr = replaceRegx(tempStr, "", "<graphic.*?>"); 693 tempStr = tempStr.replace(/<\/graphic>/g, "").trim(); 694 } 695 } else if (sourceStr.indexOf("<graphic ") !== -1) { 696 // å¤çèªéåç <graphic /> æ ç¾ 697 tempStr = tempStr.replace(/<graphic[^>]*xlink:href="([^"]+)"[^>]*\/>/g, function (match, href) { 698 return '<img src="' + href + '" />'; 699 }); 700 701 // å¤çæå¯¹ç <graphic>...</graphic> æ ç¾ 702 tempStr = tempStr.replace(/<graphic[^>]*xlink:href="([^"]+)"[^>]*>(.*?)<\/graphic>/g, function (match, href, content) { 703 return '<img src="' + href + '" />' + content; 704 }); 705 706 // è¿åå¤çåçå符串 707 return tempStr; 708 } else if (sourceStr.indexOf("<inline-graphic ") !== -1) { 709 // å¤çèªéåç <inline-graphic /> æ ç¾ 710 tempStr = tempStr.replace(/<inline-graphic[^>]*xlink:href="([^"]+)"[^>]*\/>/g, function (match, href) { 711 return '<img class="inlineformula-img" src="' + href + '" />'; 712 }); 713 714 // å¤çæå¯¹ç <inline-graphic>...</inline-graphic> æ ç¾ 715 tempStr = tempStr.replace(/<inline-graphic[^>]*xlink:href="([^"]+)"[^>]*>(.*?)<\/inline-graphic>/g, function (match, href, content) { 716 return '<img class="inlineformula-img" src="' + href + '" />' + content; 717 }); 718 719 // è¿åå¤çåçå符串 720 return tempStr; 721 } 722 tempStr = convertLink(tempStr); 723 return tempStr; 724 725} 726 727/** 728 * æ¼è£ åèæç®é¾æ¥ 729 * @param source urlædoi 730 * @param isIcon æ¯å¦å±ç¤ºä¸ºæé® 731 * @param type ç±»å:doi,url 732 * @returns {string} æ¼è£ ça龿¥html 733 */ 734function getReferLinkHtml(source, isIcon, type) { 735 var typeClass = 'ref-doi'; 736 if (type == 'url') typeClass = 'ref-url' 737 738 var iconClass = ''; 739 var show = source; 740 if (isIcon && isIcon == "true") { 741 iconClass = 'icon'; 742 show = ''; 743 } 744 745 var href = source; 746 if (type != 'url') href = 'https://dx.doi.org/' + source; 747 748 return ' <a class=\"mainColor ' + typeClass + ' ' + iconClass + '\" href=\"' + href + '\" target=\"_blank\">' + show + '</a>'; 749} 750 751/** 752 * è·ååèæç®çè¾åºç»æ 753 * @param content åèæç®çææ¬å 容 754 * @param doi åèæç®çdoi 755 * @param isIcon 龿¥æ¯å¦è¦æ¾ç¤ºä¸ºæé® 756 * @param isUp doi:æ¯å¦éè¦å¤§å 757 * @param url åèæç®ç龿¥ 758 * @returns {string} æ¼è£ åçåèæç® 759 */ 760function referenceDOIReplace(content, doi, isIcon, isUp, url, isReferNotAllowLinks) { 761 // åèæç®ä¸å 许带æé¾æ¥é ç½®å¼å¯ï¼å¯ä¼ æè ç´æ¥æ¿æ°æ®åå ¸é¡¹ 762 if (isReferNotAllowLinks || allData.dic.isReferNotAllowLinks) { 763 // ä¸å å«doiä¸æä¼ å ¥doi,å°'doi:'+doi龿¥æ¼è£ å°å å®¹å°¾é¨ 764 if (!isContainsByDoi(content) && !isNull(doi)) { 765 if ("U" == isUp) { 766 content = content + "<span>" + " doi: ".toUpperCase() + doi + "</span>"; 767 } else { 768 content = content + "<span>" + " doi: ".toLowerCase() + doi + "</span>"; 769 } 770 } else if (content.indexOf("<a") == "-1" && content.indexOf("<ext-link") == "-1") { 771 if (content.indexOf("http") != "-1") { 772 // xmlæççç½å龿¥ä¸ç&为& 773 content = content.replace(/&/g, '&'); 774 // content = content.replace(/https?:\/\/[\w\-\.]+\.[a-z]+(?:\/[\w\.\/?%&=-]*)?/g, ""); 775 content = content.replace(/https?:\/\/[^\s\]\)]+\.?/g, ""); 776 } 777 } else { 778 if (content.indexOf("<a") != "-1") { 779 content = content.replace(/<a[^>]*>(.*?)<\/a>/g, ''); 780 } else { 781 content = content.replace(/<ext-link[^>]*>(.*?)<\/ext-link>/g, ''); 782 } 783 } 784 } else { 785 var doiHtml = ""; 786 if (isNull(doi)) doi = ""; 787 if (isNull(url)) url = ""; 788 if (isContainsByDoi(content)) {//夿æ¯å¦å å«doi: 789 if (!isNull(doi)) {//ä¼ å ¥doiæ¶ç´æ¥å°doiè½¬ä¸ºé¾æ¥è¿è¡æ¿æ¢ 790 doiHtml = getReferLinkHtml(doi, isIcon, 'doi'); 791 content = content.replaceAll(doi, doiHtml); 792 } else {//æªä¼ å ¥doiæ¶,ä»å 容ä¸ååºdoi,ç¶åè½¬ä¸ºé¾æ¥å¹¶è¿è¡æ¿æ¢ 793 var re = content.toUpperCase().replace(/ /g, ""); 794 var inner = re.indexOf("DOI:") + 4; 795 doi = content.replace(/ /g, "").substring(inner); 796 797 if (doi.endsWith(".")) { 798 doi = doi.substring(0, doi.length - 1); 799 } 800 doiHtml = getReferLinkHtml(doi, isIcon, 'doi'); 801 content = content.replaceAll(doi, doiHtml); 802 } 803 } else {//ä¸å å«doi:æ¶ 804 if (content.indexOf("doi.org") != "-1" && content.indexOf(doi) != "-1" && !isNull(doi)) {//doiç龿¥æ¯å¸¦ædoi.orgç宿´é¾æ¥æ¶,æ´æ¡é¾æ¥è½¬aæ ç¾ 805 var doiurl = content.substring(content.indexOf("http"), content.indexOf(doi)); 806 doiHtml = " <a class=\"mainColor ref-doi\" href=\"" + doiurl + doi + "\" target=\"_blank\">" + doiurl + doi + "</a>"; 807 content = content.replaceAll(doiurl + doi, doiHtml); 808 } else if (!isNull(doi)) {//doiç龿¥ä¸æ¯å¸¦doi.orgç宿´é¾æ¥æ¶,ä¸æä¼ å ¥doi,å°'doi:'+
808doi龿¥æ¼è£ å°å å®¹å°¾é¨ 809 doiHtml = getReferLinkHtml(doi, isIcon, 'doi'); 810 if ("U" == isUp) { 811 content = content + "<span>" + " doi: ".toUpperCase() + doiHtml + "</span>"; 812 } else { 813 content = content + "<span>" + " doi: ".toLowerCase() + doiHtml + "</span>"; 814 } 815 } else if (!isNull(url)) {//没ædoi:,没ædoi.org,没æä¼ å ¥doiçæ åµ,ä¸è¬ä¸æ¯doièæ¯å ¶ä»é¾æ¥,éè¦å¤ææ¯å¦ä¼ å ¥url 816 if (url.lastIndexOf("/10.") != -1) {//æä¼ å ¥urlæ¶,ççurlæ¯ä¸æ¯å å«doi,妿æ¯,åå°doiååº,è½¬ä¸ºé¾æ¥åæ¼è£ è³å å®¹å°¾é¨ 817 doi = url.substring(url.lastIndexOf("/10.") + 1, url.length); 818 doiHtml = getReferLinkHtml(doi, isIcon, 'doi'); 819 if ("U" == isUp) { 820 content = content + "<span>" + " doi: ".toUpperCase() + doiHtml + "</span>"; 821 } else { 822 content = content + "<span>" + " doi: ".toLowerCase() + doiHtml + "</span>"; 823 } 824 } else {//妿urlä¸å å«doi,ææ®é龿¥å¤ç 825 doiHtml = getReferLinkHtml(url, isIcon, 'url'); 826 // 妿å 容ä¸å å«urlï¼åæ¿æ¢å 容ä¸çurlä¸ºé¾æ¥å½¢å¼ 827 if (content.indexOf(url) != "-1") { 828 content = content.replaceAll(url, doiHtml); 829 } else { 830 content = content + doiHtml; 831 } 832 } 833 } else if (content.indexOf("http") != "-1") {//没ædoi:,没ædoi.org,没æä¼ å ¥doiåurlçæ åµ,使¯å 容ä¸å å«é¾æ¥ 834 if (content.indexOf("<a") == "-1" && content.indexOf("<ext-link") == "-1") { 835 try { 836 var isConvertHttpUrl = allData.dic.referenceHttpUrl; 837 if ("1" == isConvertHttpUrl) {//ä» å½åå°é ç½®=1æ¶æå¯¹å é¨é¾æ¥è¿è¡å¤ç 838 //ä½¿ç¨æ£åå¹é å 容ä¸ç龿¥å¹¶éæ¡è½¬ä¸ºhtmlåæ¿æ¢ 839 // var pattern = new RegExp("^(http://|ftp://|https://|www){0,1}[^\u4e00-\u9fa5\\s]*?\\.(com|net|cn|me|tw|fr)[^\u4e00-\u9fa5\\s]*", "g"); 840 // var pattern = new RegExp("(http|ftp|https)://(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9@:%_\+.~#?&/=]+)*$", "g"); 841 var pattern = /https?:\/\/[\w\-\.]+\.[a-z]+(?:\/[\w\.\/?%&=-]*)?/gi; 842 var results = content.match(pattern); 843 for (var i = 0; i < results.length; i++) { 844 var httpUrl = results[i]; 845 if (!isNull(httpUrl) && httpUrl.endsWith(".")) { 846 httpUrl = httpUrl.substring(0, httpUrl.length - 1); 847 } 848 849 doiHtml = getReferLinkHtml(httpUrl, isIcon, 'url'); 850 content = content.replaceAll(httpUrl, doiHtml); 851 } 852 853 } 854 } catch (e) { 855 console.log("doi龿¥å¤çæªé ç½®!!!") 856 } 857 } else if (content.indexOf("<ext-link") != "-1") { 858 // 使ç¨xlink:href屿§æ¶ï¼éè¦å£°æxmlns:xlinkå½åç©ºé´ 859 var xmlWrapper = '<root xmlns:xlink="http://www.w3.org/1999/xlink">' + content + '</root>'; 860 // å建DOMParserå®ä¾ 861 var parser = new DOMParser(); 862 // è§£æä¸ºXMLææ¡£ 863 var parseTempStr = parser.parseFromString(xmlWrapper, "text/xml"); 864 865 // éåXMLææ¡£ï¼è½¬æ¢ext-link为aæ ç¾ 866 function convertExtLinkToA(node) { 867 if (node.nodeType === Node.ELEMENT_NODE && node.tagName.toLowerCase() === 'ext-link') { 868 var aTag = document.createElement('a'); 869 // å¤å¶å±æ§ 870 for (var i = 0; i < node.attributes.length; i++) { 871 var attr = node.attributes[i]; 872 if (attr.name.startsWith('xlink:')) { 873 if (attr.name === 'xlink:href') { 874 aTag.href = attr.value; 875 } 876 } 877 } 878 // ç§»å¨åèç¹å°æ°å建çaæ ç¾ä¸ 879 while (node.firstChild) { 880 aTag.appendChild(node.firstChild); 881 } 882 // æ¿æ¢åèç¹ 883 node.parentNode.replaceChild(aTag, node); 884 } else { 885 for (var i = 0; i < node.childNodes.length; i++) { 886 var child = node.childNodes[i];
887 convertExtLinkToA(child); 888 } 889 } 890 } 891 892 // è°ç¨å½æ°è¿è¡è½¬æ¢ 893 convertExtLinkToA(parseTempStr.documentElement); 894 895 // åºååXMLææ¡£ä¸ºåç¬¦ä¸²ï¼æ³¨æè¿éç´æ¥åºååå¯è½å å«XML声æçé¢å¤ä¿¡æ¯ï¼éè¦è¿ä¸æ¥å¤ç 896 var serializer = new XMLSerializer(); 897 var modifiedString = serializer.serializeToString(parseTempStr.documentElement); 898 899 // å»é¤rootæ ç¾ï¼è·åæç»å符串 900 content = modifiedString.replace(/<root[^>]*>|<\/root>/g, ''); 901 } 902 } 903 } 904 } 905 return content; 906} 907 908/** 909 * åè§è½¬å ¨è§ 910 * 911 * @param input è¾å ¥åç¬¦ä¸²åæ° 912 * @return string å ¨è§å符串 913 */ 914function convert2DoubleByte(input) { 915 var result = [] 916 for (var i = 0; i < input.length; i++) { 917 var str = input[i]; 918 var charStr = input.charCodeAt(i); 919 if (str == ' ') result.push('\u3000'); 920 else if (charStr < 177) { 921 charStr = charStr + 65248; 922 result.push(String.fromCharCode(charStr)); 923 } 924 } 925 return result.join(''); 926} 927 928 929/** 930 * å ¨è§è½¬åè§ 931 * 932 * @param input è¾å ¥åç¬¦ä¸²åæ° 933 * @return string åè§å符串 934 */ 935function convertSingleByte(input) { 936 var result = [] 937 for (var i = 0; i < input.length; i++) { 938 var str = input[i]; 939 var charStr = input.charCodeAt(i); 940 if (str == '\u3000') result.push(' '); 941 else if (str > '\uFF00' && str < '\uFF5F') { 942 charStr = charStr - 65248; 943 result.push(String.fromCharCode(charStr)); 944 } 945 } 946 return result.join(''); 947} 948 949/** 950 * 夿æ¯å¦ä¸ºéå¾ é表 951 * @param tagId å¾è¡¨çtagId 952 * @returns {boolean} 953 */ 954function isNotSupplementary(tagId) { 955 if (isNull(tagId)) return false; 956 var pattern = new RegExp("^Table[^A-Za-z]+$"); 957 var pattern1 = new RegExp("^Figure[^A-Za-z]+$"); 958 var matcher = tagId.match(pattern); 959 var matcher1 = tagId.match(pattern1); 960 if (allData.journal.publisherId == "shyfyx" || allData.journal.publisherId == "xhcl") { 961 // å ¼å®¹ä¸æµ·é¢é²å»å¦ä¸T1ãF1çå¾ã表 962 var pattern2 = new RegExp("^T[^A-Za-z]+$"); 963 var pattern3 = new RegExp("^F[^A-Za-z]+$"); 964 var matcher2 = tagId.match(pattern2); 965 var matcher3 = tagId.match(pattern3); 966 return !isNull(matcher) || !isNull(matcher1) || !isNull(matcher2) || !isNull(matcher3); 967 } else { 968 return !isNull(matcher) || !isNull(matcher1); 969 } 970} 971 972 973/** 974 * æ¿æ¢ç¹æ®å符 975 */ 976function replaceXmlSpecialChar(sourceStr) { 977 if (isNull(sourceStr)) return ""; 978 return sourceStr.replace(/©/g, "©") 979 .replace(/\*/g, "*") 980 .replace(/â/g, "—") 981 .replace(/>/g, ">") 982 .replace(/</g, "<"); 983} 984 985/** 986 * ç¹æ®å符è¾åºè½¬æ¢ 987 * @param input 988 * @returns {*|string} 989 */ 990function convertInut(input) { 991 //(<)(&)(>)(")(') 992 //<ï¼& >" ' (') 993 994 if (isNull(input)) return ""; 995 input = input.replace(/&/g, "&") 996 .replace(/</g, "<") 997 .replace(/>/g, ">") 998 .replace(/"/g, """) 999 .replace(/'/g, "'"); 1000 return input; 1001} 1002 1003/** 1004 * å¤çæè¦å 容 1005 * 1006 * @param str æè¦ 1007 * @param language è¯è¨ 1008 * @return string å¤çç»æ 1009 */ 1010function convertAbstractHtml(str, language) { 1011 if (isNull(str)) return ""; 1012 var secReplace = ""; 1013 var titleReplace = ""; 1014 1015 str = str.replace(/<italic>/g, "<i>").replace(/<\/italic>/g, "</i>") 1016 .replace(/<bold>/g, "<b>").replace(/<\/bold>/g, "</b>") 1017 .replace(/<underline>/g, "<u>").replace(/<\/underline>/g, "</u>") //ä¸å线 1018 .replace(/<overline>/g, "<span style=\"text-decoration:overline\">").replace(/<\/overline>/g, "</span>") //ä¸å线 1019 .replace(/<strike>/g, "<s>").replace(/<\/strike>/g, "</s>")//ä¸å线ãå é¤çº¿ 1020 // .replace(/<p>/g, "").replace(/<\/p>/g, "")//pæ ç¾ 1021 .replace(/<title\/>/g, ""); //空title 1022 1023 try { 1024 if ("en" == language) { 1025 secReplace = allData.dic.abstractSecReplaceEn; 1026 titleReplace = allData.dic.abstractTitleReplaceEn; 1027 } else { 1028 secReplace = allData.dic.abstractSecReplaceCn; 1029 titleReplace = allData.dic.abstractTitleReplaceCn; 1030 } 1031 } catch (e) { 1032 console.log("æ¹æ³convertAbstractHtmlé误!æè¦ä¸sec,titleæ¿æ¢æ ç¾æªé ç½®!!!") 1033 } 1034 1035 if (isNull(secReplace)) {//é»è®¤æ¿æ¢ä¸ºdiv 1036 str = str.replace(/<sec>/g, "<div>").replace(/<\/sec>/g, "</div>"); 1037 } else { 1038 var secReplaceArr = secReplace.split("\\$\\$\\$"); 1039 var secReplace1 = secReplaceArr[0]; 1040 var secReplace2 = secReplaceArr[1]; 1041 str = str.replace(/<sec>/g, secReplace1).replace(/<\/sec>/g, secReplace2); 1042 } 1043 1044 if (isNull(titleReplace)) {//é»è®¤æ¿æ¢ä¸ºb 1045 str = str.replace(/<title>/g, "<b>").replace(/<\/title>/g, "</b> "); 1046 } else { 1047 var titleReplaceArr = titleReplace.split("\\$\\$\\$"); 1048 var titleReplace1 = titleReplaceArr[0]; 1049 var titleReplace2 = titleReplaceArr[1]; 1050 str = str.replace(/<title>/g, titleReplace1).replace(/<\/title>/g, titleReplace2); 1051 } 1052 1053 return convertMathHtml(str); 1054} 1055 1056 1057/** 1058 * è·åæç« ç±»å转æ¢åçè¾åº 1059 */ 1060function getArticleTypeOutput(input, language) { 1061 if (isNull(input)) { 1062 try { 1063 //è·åé ç½® 1064 var settingVal = allData.dic.articleTypeTrans; 1065 //é ç½®æ ¼å¼ä¸º æç« ç±»å(å¨å):æç« ç±»å(䏿è¾åº),æç« ç±»å(è±æè¾åº); 1066 if (!isNull(settingVal)) { 1067 var convertMap = new Map(); 1068 //è§£æé ç½®æä»¶ 1069 var types = settingVal.split(";"); 1070 for (var type in types) { 1071 if (!isNull(type)) { 1072 var typeToTrans = type.split(":"); 1073 var cnToEn = typeToTrans[1].split(","); 1074 if ("en" == language) { 1075 convertMap.put(typeToTrans[0], cnToEn[1]); 1076 } else { 1077 convertMap.put(typeToTrans[0], cnToEn[0]); 1078 } 1079 } 1080 } 1081 //è·åæç« ç±»åæå¯¹åºçè¾åº 1082 return convertMap.get(input); 1083 } 1084 } catch (e) { 1085 console.log("æ¹æ³getArticleTypeOutputé误!åå ¸ä¸articleTypeTransæªé ç½®!!!") 1086 } 1087 1088 } 1089 return ""; 1090} 1091 1092/** 1093 * è·ååèæç®æ ¼å¼ 1顺åºç¼ç å¶ 2ä½è åºçå¹´å¶ 1094 */ 1095function getReferenceType(refLable) { 1096 return !isNull(refLable) && (/b[0-9]{1,3}/.test(refLable) || /[0-9]{1,3}/.test(refLable)) ? 1 : 2; 1097} 1098 1099/** 1100 * å é¤Htmlæ ç¾ 1101 * @return string 1102 */ 1103function delHTMLTag(htmlStr) { 1104 if (isNull(htmlStr)) return ""; 1105 1106 var regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; //å®ä¹scriptçæ£åè¡¨è¾¾å¼ 1107 var regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; //å®ä¹styleçæ£åè¡¨è¾¾å¼ 1108 var regEx_html = "<[^>]+>"; //å®ä¹HTMLæ ç¾çæ£åè¡¨è¾¾å¼ 1109 //var regEx_space = "\\s*|\t|\r|\n";//å®ä¹ç©ºæ ¼å车æ¢è¡ç¬¦ 1110 var regEx_space = "\t|\r|\n";//å®ä¹ç©ºæ ¼å车æ¢è¡ç¬¦ 1111 1112 htmlStr = replaceRegx(htmlStr, "", regEx_script); 1113 htmlStr = replaceRegx(htmlStr, "", regEx_style); 1114 htmlStr = replaceRegx(htmlStr, "", regEx_html); 1115 htmlStr = replaceRegx(htmlStr, "", regEx_space); 1116 1117 return htmlStr.trim(); 1118} 1119 1120/** 1121 * 夿æç« å 容䏿¯å¦æå¾ç 1122 */ 1123function isImg(context) { 1124 if (isNull(context)) return false;
1125 if (context.indexOf("img ") != "-1" && context.indexOf("src=") != "-1") { 1126 return true; 1127 } 1128 return context.indexOf("graphic") != "-1"; 1129} 1130 1131 1132/** 1133 * 夿æ¯å¦å å«ä¸æå符 1134 */ 1135function containsChinese(input) { 1136 if (isNull(input)) return false; 1137 1138 var result = [] 1139 for (var i = 0; i < input.length; i++) { 1140 var str = input[i]; 1141 var charStr = input.charCodeAt(i); 1142 if ((charStr >= 0x4e00) && (charStr <= 0x9fbb)) { 1143 return true; 1144 } 1145 } 1146 return false; 1147} 1148 1149 1150/** 1151 * ç»è£ åèæç®ä½è ä¿¡æ¯ 1152 * @param surNames åæ¡åèæç®çsurNames 1153 * @param givenNames åæ¡åèæç®çgivenNames 1154 * @returns {null|*[]} 1155 */ 1156function buildRefAuthor(surNames, givenNames) { 1157 var containsChinese = containsChinese(surNames) || containsChinese(givenNames); 1158 var surNameList = surNames.split("(\\%\\$\\%)"); 1159 var givenNameList = givenNames.split("(\\%\\$\\%)"); 1160 var authors = []; 1161 for (var i = 0; i < surNameList.length; i++) { 1162 if (!isNull(surNameList[i])) { 1163 var author = surNameList[i]; 1164 //å§ååæ¶å卿¶è¿è¡æ¼æ¥ 1165 if (givenNameList.length == surNameList.length) 1166 author = containsChinese ? surNameList[i] + givenNameList[i] : surNameList[i] + " " + givenNameList[i]; 1167 authors.push(author); 1168 } 1169 } 1170 return authors.length == 0 ? null : authors; 1171} 1172 1173 1174/** 1175 * 夿åç¬¦ä¸²ä¸æ¯å¦å 嫿°å 1176 * 1177 * @param inputStr 1178 * @return 1179 */ 1180function isContainsNumber(inputStr) { 1181 if (!isNull(inputStr)) { 1182 var p = new RegExp(".*\\d+.*", "g"); 1183 if (p.test(inputStr)) { 1184 return true; 1185 } 1186 } 1187 return false; 1188} 1189 1190/** 1191 * å¤ç页ç ä¸è½¬é¡µçé®é¢ 1192 * @param pageNum 页ç 1193 * @returns {*|string} 1194 */ 1195function getSinglePageNum(pageNum) { 1196 if (!isNull(pageNum)) { 1197 if (pageNum.indexOf("(") != "-1") { 1198 pageNum = pageNum.substring(0, pageNum.indexOf("(")); 1199 } 1200 if (pageNum.indexOf(",") != "-1") { 1201 pageNum = pageNum.substring(0, pageNum.indexOf(",")); 1202 } 1203 if (pageNum.indexOf("-") != "-1") { 1204 pageNum = pageNum.substring(0, pageNum.indexOf("-")); 1205 } 1206 return pageNum.trim(); 1207 } 1208 return "0"; 1209} 1210 1211 1212/** 1213 * è¾åºæç« 页ç 1214 * @param fpage é¦é¡µç 1215 * @param lpage 尾页ç 1216 * @param pageLength 页ç é¿åº¦éå¶,ä¸è¬ä¸º6,æ¤ä¸ºæ§çé对elocationId设置,æ°ç已丧失使ç¨åºæ¯ 1217 * @returns {string} 1218 */ 1219function outputPages(fpage, lpage, pageLength) { 1220 if (isNull(pageLength) || isNull(fpage)) { 1221 return ""; 1222 } 1223 var result = ""; 1224 if (fpage.length < pageLength) { 1225 if (fpage == "0" || fpage == "00") { 1226 return ""; 1227 } 1228 result = fpage; 1229 if (!isNull(lpage)) { 1230 result = result + "-" + lpage; 1231 } 1232 } else { 1233 result = fpage.substring(0, pageLength); 1234 } 1235 1236 return result; 1237} 1238 1239/** 1240 * 夿æ¯å¦ä¸ºdoi 1241 * @param str 1242 * @returns {boolean} 1243 */ 1244function isDoi(str) { 1245 var doiReg = new RegExp("^10.\\d{4,9}/[-._;()/:a-zA-Z0-9]+$"); 1246 if (!isNull(str)) { 1247 return doiReg.test(str); 1248 } 1249 return false; 1250} 1251 1252/** 1253 * æå符串转æé¦åæ¯å¤§å,å ¶ä½å°åçå½¢å¼ 1254 */ 1255function shiftString(sourceStr) { 1256 if (isNull(sourceStr)) return ""; 1257 sourceStr = sourceStr.replace(/ /g, "").trim(); 1258 var tempString = sourceStr.toLowerCase(); 1259 return tempString[0].toUpperCase() + tempString.substring(1); 1260} 1261 1262/** 1263 * å°ä½è å°åä¿¡æ¯ä¸ç¬¦å·tagæ¿æ¢ä¸ºæ°åtag 1264 */ 1265function replaceAffilTag(addressTag) { 1266 if (isNull(addressTag)) return ""; 1267 return addressTag.replace(/â /g, "1").replace(/â¡/g, "2").replace(/â¢/g, "3") 1268 .replace(/â£/g, "4").replace(/â¤/g, "5").replace(/â¥/g, "6") 1269 .replace(/â¦/g, "7").replace(/â§/g, "8").replace(/â¨/g, "9") 1270 .replace(/a/g, "1").replace(/b/g, "2").replace(/c/g, "3") 1271 .replace(/d/g, "4").replace(/e/g, "5").replace(/f/g, "6") 1272 .replace(/g/g, "7").replace(/h/g, "8").replace(/i/g, "9") 1273 .replace(/j/g, "10").replace(/k/g, "11").replace(/l/g, "12") 1274 .replace(/m/g, "13").replace(/n/g, "14").replace(/o/g, "15"); 1275} 1276 1277 1278/** 1279 * è·å页ç è¾åº,ä¼å elocationid,å ¶æ¬¡pageRange,æåç¨fpagelpageæ¼è£ 1280 */ 1281function getPageOutput(elocationId, pageRange, fpage, lpage, pageLength) { 1282 1283 if (!isNull(elocationId)) { 1284 return elocationId; 1285 } 1286 1287 if (!isNull(pageRange)) { 1288 return pageRange; 1289 } 1290 1291 return outputPages(fpage, lpage, pageLength); 1292} 1293 1294 1295/** 1296 * æ¥æ¾å符串ä¸å å«åç¬¦ä¸²ä¸ªæ° 1297 * 1298 * @param str ææ¬ 1299 * @param findStr è¦æ¥æ¾çå符串 1300 * @param isInit æ¯å¦å é¨è°ç¨ï¼æ¨¡å¼true 1301 */ 1302function stringNumbers(str, findStr, isInit) { 1303 var counter = 0; 1304 if (isInit) { 1305 counter = 0; 1306 } 1307 var findStrSize = findStr.length; 1308 if (str.indexOf(findStr) == -1) { 1309 return 0; 1310 } else if (str.indexOf(findStr) != -1) { 1311 counter++;
1312 stringNumbers(str.substring(str.indexOf(findStr) + findStrSize), findStr, false); 1313 return counter; 1314 } 1315 return 0; 1316} 1317 1318/** 1319 * æ°å转æå®ç¼å· 1320 * @param number 1321 * @returns {string} 1322 * @constructor 1323 */ 1324function Number2ListItem(number) { 1325 if (isNull(number)) return ""; 1326 var tmp = "0,①,②,③,④,⑤,⑥,⑦,⑧,⑨,⑩,⑪," + 1327 "⑫,⑬,⑭,⑮,⑯,⑰,⑱,⑲,⑳,㉑,㉒" + 1328 ",㉓,㉔,㉕,㉖,㉗,㉘,㉙,㉚,㉛" + 1329 ",㉜,㉝,㉞,㉟,㊱,㊲,㊳,㊴,㊵,㊶,㊷," + 1330 "㊸,㊹,㊺,㊻,㊼,㊽,㊾,㊿,(51),(52),(53),(54),(55),(56),(57),(58),(59)," + 1331 "(60),(61),(62),(63),(64),(65),(66),(67),(68),(69)," + 1332 "(70),(71),(72),(73),(74),(75),(76),(77),(78),(79)," + 1333 "(80),(81),(82),(83),(84),(85),(86),(87),(88),(89),(90)"; 1334 var tmpIndex = tmp.split(","); 1335 if (number > 90) { 1336 return ""; 1337 } 1338 return tmpIndex[number]; 1339} 1340 1341/** 1342 * 转æ¢ä½è ç®ä»ä¸çé®ç®±ä¸ºå¯ç¹å»çé®ç®±å°å 1343 * æmailtoï¼ æ è¯çä¸è½¬æ¢ 1344 * 1345 * @param input 1346 * @return 1347 */ 1348function convertAuthorEmailHref(input) { 1349 1350 //空çå°±ç´æ¥è¿å 1351 if (isNull(input)) return input; 1352 1353 //å å«mailtoçç´æ¥è¿å 1354 if (input.indexOf("mailto:") != "-1") return input; 1355 1356 var emailHref = input; 1357 var reg = "[A-Za-z0-9\\u4e00-\\u9fa5]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+"; 1358 1359 try { 1360 var regSetting = allData.dic.excelAuthorEmailHrefConvert; 1361 if (!isNull(regSetting)) { 1362 reg = regSetting; 1363 } 1364 } catch (e) { 1365 console.log("æ¹æ³convertAuthorEmailHrefé误!åå ¸ä¸excelAuthorEmailHrefConvertæªé ç½®!!!") 1366 } 1367 1368 1369 var pattern = new RegExp(reg, 'g'); //ç¼è¯æ£åè¡¨è¾¾å¼ 1370 var list = input.match(pattern); 1371 if (!list) { 1372 return; 1373 } else { 1374 for (var i = 0; i < list.length; i++) { 1375 var email = list[i]; 1376 1377 if (!isNull(email)) { 1378 emailHref = emailHref.replace(new RegExp(email, 'g'), "<a href=\"mailto:" + email + "\">" + email + "</a>"); 1379 } 1380 } 1381 } 1382 1383 return emailHref; 1384} 1385 1386/** 1387 * æ¿æ¢è¡¨æ ¼ä¸çå¾çè·¯å¾ 1388 * @param {*} content è¡¨æ ¼å 容 1389 * @param {*} article æç« 1390 */ 1391function repalceTableImg(content, article) { 1392 if (!content) { 1393 return; 1394 } else { 1395 var srcStart = "" 1396 if (article.articleState && article.articleState != "") { 1397 srcStart = filePath + "journal/article/" + allData.journal.publisherId.toLowerCase() + "/newcreate/"; 1398 } else { 1399 srcStart = filePath + "journal/article/" + allData.journal.publisherId.toLowerCase() + "/" + article.year + "/" + article.issue + "/"; 1400 } 1401 return content.replace(/src="/g, 'src="' + srcStart); 1402 } 1403} 1404 1405/** 1406 * 夿æ¯å¦æ¯æ°åç±»å 1407 */ 1408function isNumber(obj) { 1409 return typeof parseInt(obj) === 'number' && !isNaN(parseInt(obj)); 1410} 1411 1412/** 1413 * å»é¤æ®éç©ºæ ¼ï¼\sï¼ãå¶è¡¨ç¬¦ãæ¢è¡ç¬¦å ï¼éæç©ºæ ¼ï¼ 1414 */ 1415function removeSpacesAndNbsp(inputString) { 1416 // ä½¿ç¨æ£å表达å¼å¹é æ®éç©ºæ ¼ãå¶è¡¨ç¬¦ãæ¢è¡ç¬¦å 1417 var regex = /[\s\u00A0]+/g; 1418 return inputString.replace(regex, ''); 1419} 1420 1421/** 1422 * æ°å转带åçæ°åï¼ä» æ¯æ1-50ï¼50åçæ®éåç¬¦éæ²¡æ 1423 */ 1424function arabicToCircledNumber(arabicNumber) { 1425 if (isNull(arabicNumber)) return ""; 1426 if (arabicNumber >= 1 && arabicNumber <= 50) { 1427 const circledNumbers = [ 1428 'â ', 'â¡', 'â¢', 'â£', 'â¤', 1429 'â¥', 'â¦', 'â§', 'â¨', 'â©', 1430 'âª', 'â«', 'â¬', 'â', 'â®', 1431 'â¯', 'â°', 'â±', 'â²', 'â³', 1432 'ã', 'ã', 'ã', 'ã', 'ã', 1433 'ã', 'ã', 'ã', 'ã', 'ã', 1434 'ã', 'ã', 'ã', 'ã', 'ã', 1435 'ã±', 'ã²', 'ã³', 'ã´', 'ãµ', 1436 'ã¶', 'ã·', 'ã¸', 'ã¹', 'ãº', 1437 'ã»', 'ã¼', 'ã½', 'ã¾', 'ã¿' 1438 ];
1439 return circledNumbers[arabicNumber - 1]; 1440 } else { 1441 return arabicNumber.toString(); // è¶ åºèå´çæ°ååæ ·è¿å 1442 } 1443} 1444 1445/** 1446 * è¿æ»¤æç« çä½è ï¼ææç« çè±æä½è authorEnList追å å°articleä¸ 1447 */ 1448function articleAuthors2AhthorsEn(article) { 1449 if (article && article.authors && article.authors.length) { 1450 article.authorEnList = []; 1451 $.each(article.authors, function (i, author) { 1452 if (author.authorNameEn) { 1453 article.authorEnList.push(author); 1454 } 1455 }) 1456 } 1457 return article; 1458} 1459/** 1460 * è¿æ»¤æç« çä½è ï¼ææç« ç䏿ä½è authorCnListãè±æä½è authorEnList追å å°articleä¸ 1461 */ 1462function articleAuthors2AuthorsCnOrAuthorsEn(article) { 1463 if (article && article.authors && article.authors.length) { 1464 article.authorCnList = []; 1465 article.authorEnList = []; 1466 $.each(article.authors, function (i, author) { 1467 author.authorNameEn ? article.authorEnList.push(author) : ''; 1468 author.authorNameCn ? article.authorCnList.push(author) : ''; 1469 }) 1470 } 1471 return article; 1472} 1473/** 1474 * è¿æ»¤æç« çkeywordsï¼ææç« ç䏿ä½è keywordsCnListãè±æä½è keywordsEnList追å å°articleä¸ 1475 */
1476function articleKeyword2KeywordCnOrKeywordEn(article) { 1477 if (article && article.keywords && article.keywords.length) { 1478 article.keywordCnList = []; 1479 article.keywordEnList = []; 1480 $.each(article.keywords, function (i, keyword) { 1481 keyword.keywordEn ? article.keywordEnList.push(keyword) : ''; 1482 keyword.keywordCn ? article.keywordCnList.push(keyword) : ''; 1483 }) 1484 } 1485 return article; 1486} 1487/** 1488 * 转ä¹å符串ä¸çåå¼å·ãåå¼å· 1489 */ 1490function escapeString(str) { 1491 if (str) { 1492 return str.replace(/[\"\']/g, function (match) { 1493 switch (match) { 1494 case '\"': return '"'; 1495 case "\'": return '''; 1496 } 1497 }); 1498 } 1499} 1500 1501if (!String.prototype.replaceAll) { 1502 String.prototype.replaceAll = function (str, newStr) { 1503 // If a regex pattern 1504 if (Object.prototype.toString.call(str).toLowerCase() === '[object regexp]') { 1505 return this.replace(str, newStr); 1506 } 1507 // If a string 1508 return this.replace(new RegExp(str, 'g'), newStr); 1509 }; 1510 template.defaults.imports.replaceAll = String.prototype.replaceAll; 1511} 1512 1513/** 1514 * æ¿æ¢å 容ä¸çå¾çè·¯å¾ 1515 */ 1516function replaceImg(context, path) { 1517 if (context && path) { 1518 // å建ä¸ä¸ªæ£å表达å¼ï¼å¹é <img src="...">ä¸çsrc屿§ 1519 var regex = /<img\s+src="([^"]+)"/g; 1520 1521 // éè¿å¾ªç¯å¹é ææç<img>æ ç¾ï¼å¹¶æ¿æ¢å ¶ä¸çsrc屿§ 1522 var updatedContext = context; 1523 var match = regex.exec(context); 1524 while (match !== null) { 1525 var originalSrc = match[1]; 1526 var replacement = '<img src="' + path + originalSrc + '"'; 1527 updatedContext = updatedContext.replace('<img src="' + originalSrc + '"', replacement); 1528 match = regex.exec(context); 1529 } 1530 1531 return updatedContext; 1532 } 1533} 1534 1535if (typeof Object.assign !== 'function') { 1536 Object.defineProperty(Object, 'assign', { 1537 value: function (target) { 1538 'use strict'; 1539 if (target == null) { 1540 throw new TypeError('Cannot convert undefined or null to object'); 1541 } 1542 1543 var to = Object(target); 1544 1545 for (var index = 1; index < arguments.length; index++) { 1546 var nextSource = arguments[index]; 1547 1548 if (nextSource != null) { 1549 for (var nextKey in nextSource) { 1550 if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { 1551 to[nextKey] = nextSource[nextKey]; 1552 } 1553 } 1554 } 1555 } 1556 return to; 1557 }, 1558 writable: true, 1559 configurable: true 1560 }); 1561} 1562/** 1563 * 对ä½è ä¸çé讯ä½è 以é讯ä½è çcorrespSortæåºï¼å¦ææ²¡æï¼åé»è®¤æåº 1564 * @param {*} authors ä½è æ°ç» 1565 */ 1566function sortCorresper(authors) { 1567 if (!authors) return authors; 1568 var itemsWithIndex = []; 1569 var itemsWithoutIndex = []; 1570 1571 for (var i = 0; i < authors.length; i++) { 1572 var item = authors[i]; 1573 if (typeof item.correspSort !== 'undefined') { 1574 itemsWithIndex.push(item); 1575 } else { 1576 itemsWithoutIndex.push(item); 1577 } 1578 } 1579 1580 itemsWithIndex.sort(function (a, b) { 1581 return a.correspSort - b.correspSort; 1582 }); 1583 1584 return itemsWithIndex.concat(itemsWithoutIndex); 1585} 1586 1587/** 1588 * æ ¡éªæ£ç´¢è¯è¾å ¥ç¶æ 1589 * @return 1590 */ 1591function checkSearchNew(form) { 1592 var searchText = $(form).find("input[name='q']").val().replace(" ", ""); 1593 if (isNull($("#language").val()) || $("#language").val() == "cn") { 1594 if (typeof (searchText) == "undefined" || searchText == "" || searchText == "请è¾å ¥æ£ç´¢è¯ï¼") { 1595 alert("请è¾å ¥æ£ç´¢è¯ï¼"); 1596 return false; 1597 } else { 1598 if ($(".formToken").length && $(".formToken").val() != "") { 1599 return true; 1600 } 1601 } 1602 } else if ($("#language").val() == "en") { 1603 if (typeof (searchText) == "undefined" || searchText == "" || searchText == "Please enter the search word") { 1604 alert("Please enter the search word"); 1605 return false; 1606 } else { 1607 if ($(".formToken").length && $(".formToken").val() != "") { 1608 return true; 1609 } 1610 } 1611 } 1612 return false; 1613} 1614 1615function kb2Mb(value) { 1616 var n = 1; 1617 if (typeof value === 'number' && !isNaN(value) && value != 0) { 1618 return Math.round(value / 1024 * Math.pow(10, n)) / Math.pow(10, n); 1619 } else { 1620 return 0; 1621 } 1622} 1623 1624/** 1625 * doiå¼æè½¬cstr弿 1626 * @param {*} doiCitation doi弿 1627 * @param {*} CSTR CSTRå·ï¼ä¸è¬å¯ç´æ¥ä½¿ç¨doiå· 1628 * @return CSTRCitation 1629 */ 1630function doiCitation2CSTRCitation(doiCitation, CSTR) { 1631 1632 // å°å符串å 裹å¨ä¸ä¸ªä¸´æ¶ç div ä¸ 1633 var $doicitation = $('<div>' + doiCitation + '</div>'); 1634 1635 // ä½¿ç¨ jQuery éæ©å¨è·å a æ ç¾ 1636 var $a = $doicitation.find('a'); 1637 if ($a.length > 0) { 1638 var href = $a.attr('href'); 1639 var text = CSTR ? CSTR : $a.text(); 1640 1641 if (href.indexOf('doi') > 0) { 1642 var cstrHref = 'https://www.cstr.cn/' + text; 1643 1644 // æ´æ° a æ ç¾ç href åææ¬ 1645 $a.attr('href', cstrHref); 1646 $a.text(text); 1647 1648 // æ¿æ¢ "DOI:" 为 "CSTR:" 1649 $doicitation.html($doicitation.html().replace('DOI:', 'CSTR:')); 1650 } 1651 } 1652 1653 // ç§»é¤ä¸´æ¶ç div å¹¶è¿åå¤çåç HTML 1654 return $doicitation.html(); 1655} 1656// article.copyRightåæ®µä¸çxml转为htmlå ç´ ï¼åªå¯¹copyright-statementãlicense-p:not([specific-use="electronic-only"])åå±ç¤ºï¼ext-link转æ¢ä¸ºaæ ç¾ 1657function convertCopyRight(string) { 1658 var $xml = $("<root>" + string + "</root>"); 1659 var $permissions = $xml.find("permissions"); 1660 var html = ""; 1661 $permissions.children().each(function () { 1662 var $element = $(this); 1663 var tagName = $element.prop("tagName").toLowerCase(); 1664 if (tagName === "copyright-statement" || tagName === "license") { 1665 html += "<div class='" + tagName + "'>"; 1666 if (tagName === "license") { 1667 $element.children().each(function () { 1668 var $child = $(this); 1669 var childTagName = $child.prop("tagName").toLowerCase(); 1670 if ( 1671 childTagName === "license-p" && 1672 $child.attr("specific-use") !== "electronic-only" 1673 ) { 1674 html += "<div class='license-p'>"; 1675 $child.contents().each(function () { 1676 if (this.nodeType === 1 && this.tagName.toLowerCase() === "ext-link") { 1677 var href = $(this).attr("xlink:href"); 1678 var text = $(this).text(); 1679 html += "<a href=\"" + href + "\">
1679" + text + "</a>"; 1680 } else { 1681 html += this.nodeType === 3 ? this.nodeValue : $(this).prop("outerHTML"); 1682 } 1683 }); 1684 html += "</div>"; 1685 } 1686 }); 1687 } else { 1688 html += $element.text(); 1689 } 1690 html += "</div>"; 1691 } 1692 }); 1693 return html; 1694} 1695 1696// article.copyRightLicenseåæ®µä¸çxml转为htmlå ç´ ï¼ext-link转æ¢ä¸ºaæ ç¾ 1697function convertCopyRightLicense(string) { 1698 var $xml = $("<root>" + string + "</root>"); 1699 var $licenseP = $xml.find("license-p"); 1700 var html = ""; 1701 html += "<div class='license-p'>"; 1702 $licenseP.contents().each(function () { 1703 if (this.nodeType === 1 && this.tagName.toLowerCase() === "ext-link") { 1704 var href = $(this).attr("xlink:href"); 1705 var text = $(this).text(); 1706 html += "<a href=\"" + href + "\">" + text + "</a>"; 1707 } else { 1708 html += this.nodeType === 3 ? this.nodeValue : $(this).prop("outerHTML"); 1709 } 1710 }); 1711 html += "</div>"; 1712 return html; 1713} 1714 1715function journalCycleType(cycleType, language) { 1716 if (!language) { 1717 language = "cn"; 1718 } 1719 if (cycleType && cycleType != "") { 1720 var cycleTypeMapping = { 1721 cn: { 5: "æå", 1: "å¹´å", 2: "åå¹´å", 3: "å£å", 4: "åæå", 6: "åæå", 7: "æ¬å", 8: "å¨å" }, 1722 en: { 5: "Monthly", 1: "Annuals", 2: "Semiyearly", 3: "Quarterly", 4: "Bimonthly", 6: "Semimonthly", 7: "Periodical", 8: "Weekly" }, 1723 }; 1724 if (cycleTypeMapping[language] && cycleTypeMapping[language][cycleType]) { 1725 return cycleTypeMapping[language][cycleType]; 1726 } else { 1727 return "Unknown"; // é»è®¤è¿åå¼ 1728 } 1729 } 1730 else { 1731 return "è¯·æ£æ¥æåä¿¡æ¯ä¸æ¯å¦é ç½®åºç卿" 1732 } 1733 1734} 1735 1736/** 1737 * å¹³æ»æ»å¨å°æå®å ç´ ,IEé级å°ç´æ¥è·³è½¬ 1738 * @param {string} selector - ç®æ å ç´ çéæ©å¨ 1739 * @param {object} options - å¯éåæ° 1740 * @param {number} options.offset - æ»å¨æ¶çåç§»éï¼é»è®¤0 1741 * @param {number} options.duration - æ»å¨æç»æ¶é´ï¼é»è®¤1000æ¯«ç§ 1742 * @param {string} options.scrollContainer - æ»å¨å®¹å¨çéæ©å¨ï¼é»è®¤çªå£ 1743 * @param {function} options.callback - æ»å¨å®æåçåè°å½æ° 1744 */ 1745function smoothScrollToElement(selector, options) { 1746 // åæ°å¤çï¼å¼ºå¶è¦æ± options ä¸ºå¯¹è±¡ï¼ 1747 options = options || {}; 1748 1749 // é»è®¤å¼åå¹¶ 1750 var offset = options.offset || 0; // é»è®¤åç§»0px 1751 var duration = typeof options.duration === 'number' ? options.duration : 1000; // é»è®¤1ç§ 1752 var scrollContainer = options.scrollContainer || null; // é»è®¤çªå£æ»å¨ 1753 var callback = options.callback || function () { }; // 宿åè° 1754 1755 // è·åå ç´ åå®¹å¨ 1756 var $element = $(selector); 1757 var $container = scrollContainer ? $(scrollContainer) : $('html, body'); 1758 if (!$element.length) return; 1759 1760 // 夿æ¯å¦ä¸ºçªå£æ»å¨ 1761 var isWindow = $container[0] === window || $container[0] === document.documentElement; 1762 1763 // 计ç®ç®æ ä½ç½® 1764 function calculateTargetPosition() { 1765 if (isWindow) { 1766 return $element.offset().top - offset; 1767 } else { 1768 var elementTop = $element.offset().top; 1769 var containerTop = $container.offset().top; 1770 return elementTop - containerTop - offset + $container.scrollTop(); 1771 } 1772 } 1773 1774 // éçº§æ¹æ¡ï¼IE10ç´æ¥è·³è½¬ï¼ 1775 if (typeof window.requestAnimationFrame !== 'function') { 1776 var targetPos = calculateTargetPosition(); 1777 isWindow ? $('html, body').scrollTop(targetPos) : $container.scrollTop(targetPos); 1778 callback(); // ç«å³è§¦ååè° 1779 return; 1780 } 1781 1782 // å¨ç»é»è¾ 1783 var startPos = $container.scrollTop(); 1784 var targetPos = calculateTargetPosition(); 1785 var startTime = Date.now(); 1786 1787 // ç¼å¨å½æ° 1788 function easeInOutQuad(t) { 1789 return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t; 1790 } 1791 1792 function animate() { 1793 var now = Date.now();
1794 var elapsed = now - startTime; 1795 var progress = Math.min(elapsed / duration, 1); 1796 var eased = easeInOutQuad(progress); 1797 1798 var currentTarget = calculateTargetPosition(); 1799 var newPos = startPos + (currentTarget - startPos) * eased; 1800 1801 isWindow ? $('html, body').scrollTop(newPos) : $container.scrollTop(newPos); 1802 if (elapsed < duration) { 1803 requestAnimationFrame(animate); 1804 } else { 1805 // æç»å®ä½å¹¶è§¦ååè° 1806 isWindow ? $('html, body').scrollTop(currentTarget) : $container.scrollTop(currentTarget); 1807 callback(); // ç«å³è§¦ååè° 1808 } 1809 } 1810 1811 requestAnimationFrame(animate); 1812} 1813 1814//æ»å¨æ¶è®¾ç½®æä¸ªå ç´ fixed 1815function fixed(standardName, objName) { 1816 if ($(standardName).length > 0 && (objName).length > 0) { 1817 var scrollTop = $(document).scrollTop(); 1818 1819 var standard = $(standardName), 1820 top = standard.offset().top + standard.height(), 1821 obj = $(objName); 1822 1823 if (top < scrollTop) { 1824 if (!obj.hasClass('fix')) obj.addClass('fix'); 1825 return; 1826 } 1827 obj.removeClass('fix'); 1828 } 1829} 1830 1831if (!Array.prototype.includes) { 1832 Object.defineProperty(Array.prototype, 'includes', { 1833 value: function (searchElement, fromIndex) { 1834 if (this == null) { 1835 throw new TypeError('"this" is null or not defined'); 1836 } 1837 var o = Object(this); 1838 var len = o.length >>> 0; 1839 if (len === 0) { 1840 return false; 1841 } 1842 var n = fromIndex | 0; 1843 var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); 1844 while (k < len) { 1845 if (o[k] === searchElement) { 1846 return true; 1847 } 1848 k++; 1849 } 1850 return false; 1851 } 1852 }); 1853} 1854 1855// str转arrayï¼å¹¶trim() 1856function str2Array(str, splitStr) { 1857 if (!splitStr) { var splitStr = ',' } 1858 return str.split(splitStr).map(function (item) { 1859 return item.trim ? item.trim() : item.replace(/^\s+|\s+$/g, ''); 1860 }); 1861}; 1862 1863// å»é¤å 裹çpæ ç¾ 1864function removeOuterPTags(input) { 1865 input = input.trim(); 1866 if (input.startsWith('<p>') && input.endsWith('</p>')) { 1867 input = input.slice(3, -4).trim(); 1868 } 1869 return input; 1870} 1871 1872// æ ¹æ®journalIdè·åjournalï¼å¦ææ²¡æä¼ éjournalså使ç¨allData.jouranl 1873function getJournalByJournalId(journalId, journals) { 1874 if (journals) { 1875 var currentjournals = journals; 1876 } else { 1877 var currentjournals = allData.journals; 1878 } 1879 var journal = ""; 1880 if (journalId && currentjournals) { 1881 currentjournals.forEach(function (item, index) { 1882 if (item.id == journalId) { 1883 journal = item; 1884 } 1885 }) 1886 } 1887 return journal ? journal : "æªè·åæåï¼æ£æ¥journalId"; 1888} 1889 1890// 妿ææåçåºéå·ï¼åç»åºéä¿¡æ¯ä¸æ¼æ¥sowiseåç¹ 1891// 妿ææåçåºéå·ï¼åç»åºéä¿¡æ¯ä¸æ¼æ¥sowiseåç¹ 1892function renderFundPrjInfo(fundPrjInfo, fundPrjs) { 1893 if (!fundPrjs) { 1894 return fundPrjInfo; 1895 } 1896 1897 var awardIds = []; 1898 if (Object.prototype.toString.call(fundPrjs) === "[object Array]") { 1899 for (var i = 0; i < fundPrjs.length; i += 1) { 1900 var item = fundPrjs[i]; 1901 if (item && item.awardId) { 1902 awardIds.push(item.awardId); 1903 } 1904 } 1905 } 1906 1907 var processed = fundPrjInfo; 1908 for (var i = 0; i < awardIds.length; i += 1) { 1909 var awardId = awardIds[i]; 1910 if (processed.indexOf(awardId) !== -1) { 1911 var span = '<span class="span-awardId">' + awardId + "</span>"; 1912 processed = processed.split(awardId).join(span); 1913 } 1914 } 1915 1916 return processed; 1917} 1918 1919dayjs.extend(window.dayjs_plugin_relativeTime); 1920template.defaults.imports.filterHTMLTag = filterHTMLTag; 1921template.defaults.imports.startsWith = String.prototype.startsWith; 1922template.defaults.imports.endsWith = String.prototype.endsWith; 1923template.defaults.imports.trim = String.prototype.trim; 1924template.defaults.imports.split = String.prototype.split; 1925template.defaults.imports.fromCharCode = String.fromCharCode; 1926template.defaults.imports.isNull = isNull; 1927template.defaults.imports.convertLink = convertLink; 1928template.defaults.imports.isNotSupplementary = isNotSupplementary; 1929template.defaults.imports.getReferLinkHtml = getReferLinkHtml; 1930template.defaults.imports.isContainsByDoi = isContainsByDoi; 1931template.defaults.imports.replaceRegx = replaceRegx; 1932template.defaults.imports.referenceDOIReplace = referenceDOIReplace; 1933template.defaults.imports.convertMathHtml = convertMathHtml; 1934template.defaults.imports.delHTMLTag = delHTMLTag; 1935template.defaults.imports.convertAuthorEmailHref = convertAuthorEmailHref; 1936template.defaults.imports.outputPages = outputPages; 1937template.defaults.imports.repalceTableImg = repalceTableImg; 1938template.defaults.imports.convertAbstractHtml = convertAbstractHtml; 1939template.defaults.imports.isNumber = isNumber; 1940template.defaults.imports.removeSpacesAndNbsp = removeSpacesAndNbsp;
1941template.defaults.imports.arabicToCircledNumber = arabicToCircledNumber; 1942template.defaults.imports.articleAuthors2AhthorsEn = articleAuthors2AhthorsEn; 1943template.defaults.imports.articleAuthors2AuthorsCnOrAuthorsEn = articleAuthors2AuthorsCnOrAuthorsEn; 1944template.defaults.imports.articleKeyword2KeywordCnOrKeywordEn = articleKeyword2KeywordCnOrKeywordEn; 1945template.defaults.imports.escapeString = escapeString; 1946template.defaults.imports.encodeURIComponent = encodeURIComponent; 1947template.defaults.imports.decodeURIComponent = decodeURIComponent; 1948template.defaults.imports.replace = String.prototype.replace; 1949template.defaults.imports.replaceImg = replaceImg; 1950template.defaults.imports.JSON = JSON; 1951template.defaults.imports.sortCorresper = sortCorresper; 1952template.defaults.imports.kb2Mb = kb2Mb; 1953template.defaults.imports.doiCitation2CSTRCitation = doiCitation2CSTRCitation; 1954template.defaults.imports.convertCopyRight = convertCopyRight; 1955template.defaults.imports.convertCopyRightLicense = convertCopyRightLicense; 1956template.defaults.imports.journalCycleType = journalCycleType; 1957template.defaults.imports.includes = Array.prototype.includes; 1958template.defaults.imports.str2Array = str2Array; 1959template.defaults.imports.removeOuterPTags = removeOuterPTags; 1960template.defaults.imports.getJournalByJournalId = getJournalByJournalId; 1961template.defaults.imports.renderFundPrjInfo = renderFundPrjInfo; 1962window.firstBy ? template.defaults.imports.firstBy = firstBy : "";
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.