1/** 2 * æç« ãæå®ããè¡æ°ã§çç¥ããã 3 * IEã§ã®ã¿å¦çããããã以å¤ã¯cssã§å¦çãã¦ããã 4 */ 5 6if (window.navigator.userAgent.indexOf('Trident') != -1 || window.navigator.userAgent.indexOf('msie') != -1) { 7 // çç¥å¯¾è±¡ã®classãæå® 8 var omit = document.getElementsByClassName('description'); 9 10 window.onload = function() { 11 // å ã®æç« ãdata-origintextã«éé¿ 12 omit_init(); 13 // æç« ãçç¥ããå¦çã弿°ã«è¡æ°ãæå®ã 14 omit_sentence(2); 15 }; 16 17 /** 18 * æåçç¥ã®åæè¨å® 19 */ 20 function omit_init() { 21 for (var i = 0; i < omit.length; i++) { 22 if(omit[i].dataset.origintext === undefined) { 23 var sentence = omit[i].textContent; 24 omit[i].dataset.origintext = sentence; 25 } 26 } 27 } 28 29 /** 30 * æåçç¥ã®å®è¡ 31 * @param {number} line - çç¥ããè¡æ° 32 */ 33 function omit_sentence(line) { 34 // å¯¾è±¡ã®æç« ã1æåãã¤spanã§åºåã 35 for (var i = 0; i < omit.length; i++) { 36 omit[i].innerHTML = divide_sentence(omit[i].dataset.origintext); 37 } 38 39 // åºåã£ãæåã®è¡æ°(座æ¨)ã調ã¹ã 40 for (var i = 0; i < omit.length; i++) { 41 var s = omit[i].getElementsByTagName('span'); 42 // çç¥ããä½ç½®ã調ã¹ã 43 var omitIndex = check_character_row_count(s, line); 44 45 // çç¥ããæç« ãåæ 46 var sentence = omit[i].dataset.origintext; 47 if(omitIndex !== undefined) { 48 sentence = sentence.slice(0, omitIndex) + 'â¦'; 49 } 50 omit[i].textContent = sentence; 51 } 52 } 53 54 /** 55 * æç« ã1æåãã¤spanã§æ¬ã£ã¦è¿ã 56 * @param {string} text - åå²ããæåå 57 */ 58 function divide_sentence(text) { 59 var textArr = text.split(''); 60 var divideText = ''; 61 for (var i = 0; i < textArr.length; i++) { 62 divideText += '<span>' + textArr[i] + '</span>'; 63 } 64 divideText += '<span>' + 'â¦' + '</span>'; 65 return divideText; 66 } 67 68 /** 69 * çç¥ããä½ç½®ã調ã¹ã¦è¿ã 70 * @param {object} text - spanã§åºåã£ãæå群 71 * @param {number} line - çç¥ããè¡æ° 72 */ 73 function check_character_row_count(text, line) { 74 var lineCount = 0; 75 var beforeTop = text[0].getBoundingClientRect().top - 1; 76 var omitIndex = undefined; 77 for (var i = 0; i < text.length - 1; i++) { // æç« ã®æå¾ã«ç¢ºèªç¨ã®çç¥æåãå ¥ã£ã¦ããã®ã§ãæå¾ã®æåã¯ãã§ãã¯ããé¤å¤ 78 var currentTop = text[i].getBoundingClientRect().top; 79 // ä»åã®æåã®åº§æ¨ãååã®æåã®åº§æ¨ããå ã«é²ãã§ããæ 80 if(currentTop > beforeTop) { 81 beforeTop = currentTop; 82 lineCount++; 83 } 84 // 調ã¹ã¦ããæåãçç¥è¡æ°ãéããæ 85 if(lineCount > line) { 86 // çç¥ã®è¨å·ãå ¥ãããããæåã®å¹ ããåãåãä½ç½®ã®èª¿æ´ 87 var ellipsisWidth = text[text.length - 1].getBoundingClientRect().width + 1; 88 var c = 0; 89 var w = 0; 90 do { 91 c++; 92 w += text[i - c].getBoundingClientRect().width; 93 } while(w < ellipsisWidth); 94 omitIndex = i - c; 95 break; 96 } 97 } 98 return omitIndex; 99 } 100}
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.