1/** 2 * è¦ç´ ã®é«ããæããã 3 * @param arg 次ã®è¨å®å¤ãã¾ã¨ãããªãã¸ã§ã¯ã 4 * elemTagName é«ããæããè¦ç´ ã®ã¿ã°å 5 * elemClass é«ããæããè¦ç´ ã®class 6 * parentTagName é«ããæããè¦ç´ ã®è¦ªï¼ç¥å ï¼ã®ã¿ã°å 7 * parentClass é«ããæããè¦ç´ ã®è¦ªï¼ç¥å ï¼ã®class 8 * interval é«ããæ´æ°ããéé 9 */ 10function EqualHeight(arg) { 11 12 if((!document.getElementById)||(!document.getElementsByTagName)||(!document.createElement)) { return; } 13 if((!arg.elemTagName)||(!arg.elemClass)||(!arg.parentTagName)||(!arg.parentClass)) { 14 return; 15 } 16 17 var elemTagName = arg.elemTagName; 18 var elemClass = arg.elemClass; 19 var parentTagName = arg.parentTagName; 20 var parentClass = arg.parentClass; 21 var interval = arg.interval; 22 23 var criterion; 24 var criterionHeight = 0; 25 26 var parents = []; 27 28 initialize(); 29 30 31 /** 32 * ã¿ã¤ãã¼è¨å® 33 */ 34 function initialize() { 35 36 var root = document.getElementsByTagName("body")[0]; 37 parents = getElementsByTagAndClass(root, parentTagName, parentClass); 38 39 criterion = setCriterion(); 40 41 if((parents.length > 0) && (criterion != null)){ 42 main(); 43 setInterval(timerHandler, interval); 44 } 45 } 46 47 48 /** 49 * æåãµã¤ãºã夿´ããããã©ãããå¤å®ããããã®è¦ç´ ãçæããã 50 * @returns çæããè¦ç´ 51 */ 52 function setCriterion() { 53 54 var criterion = document.createElement("div"); 55 var criterionText = document.createTextNode("H"); 56 criterion.appendChild(criterionText); 57 criterion.style.visibility = "hidden"; 58 criterion.style.position = "absolute"; 59 criterion.style.top = "0"; 60 var body = document.getElementsByTagName("body")[0]; 61 body.appendChild(criterion); 62 63 return criterion; 64 } 65 66 67 68 /** 69 * 70 */ 71 function timerHandler() { 72 main(); 73 } 74 75 76 /** 77 * ä¸å®æéï¼intevalï¼ãã¨ã«å®è¡ããå¦ç 78 */ 79 function main() { 80 81 //æåãµã¤ãºãå¤ãã£ã¦ããªãå ´åã¯ãçµäº 82 if((criterionHeight != 0) && (criterionHeight == criterion.offsetHeight)) return; 83 84 criterionHeight = criterion.offsetHeight; 85 86 var parentsCount = parents.length; 87 var parent; 88 for(var i=0; i<parentsCount; i++) { 89 parent = parents[i]; 90 setElemHeight(parent, elemTagName, elemClass); 91 } 92 } 93 94 95 96 /** 97 * é«ããæå¤§å¤ã«æãã 98 * @param parent é«ããæããè¦ç´ éã®è¦ªè¦ç´ 99 * @param elemTag é«ããæããè¦ç´ éã®ã¿ã°å 100 * @param elemClass é«ããæããè¦ç´ éã®classå 101 */ 102 function setElemHeight(parent, elemTag, elemClass) { 103 104 //é«ããæãã対象ã¨ãªãè¦ç´ 105 var elems = getElementsByTagAndClass(parent, elemTag, elemClass); 106 var elemsCount = elems.length; 107 108 //対象ããªãå ´åã¯çµäº 109 if(elemsCount == 0)return; 110 111 //heightããã£ããautoã« 112 for(var i=0; i<elemsCount; i++) { 113 elem = elems[i]; 114 elem.style.height = "auto"; 115 } 116 117 //heightãä¸çªå¤§ããè¦ç´ 118 var maxHeightElem = getMaxHeightElem(elems); 119 var maxHeight = maxHeightElem.offsetHeight; 120 121 var elem; 122 var elemHeight; 123 var verticalPadding = 0; 124 var verticalBorder = 0; 125 126 for(i=0; i<elemsCount; i++) { 127 128 elem = elems[i]; 129 130 //ä¸çªé«ãè¦ç´ ã®å ´åã¯ã¹ããã 131 if(elem == maxHeightElem) { continue; } 132 133 var elemStyle = elem.currentStyle || window.getComputedStyle(elem, null); 134 if(!elemStyle) return; 135 136 verticalPadding = 0; 137 verticalBorder = 0; 138 139 //ä¸ä¸ã®paddingãåå¾ 140 if(!isNaN(parseInt(elemStyle.paddingTop))) { 141 verticalPadding += parseInt(elemStyle.paddingTop); 142 } 143 if(!isNaN(parseInt(elemStyle.paddingBottom))) { 144 verticalPadding += parseInt(elemStyle.paddingBottom); 145 } 146 147 //ä¸ä¸ã®border-widthãåå¾ 148 if((elemStyle.borderTopStyle != "none") && (!isNaN(parseInt(elemStyle.borderTopWidth)))) { 149 verticalBorder += parseInt(elemStyle.borderTopWidth); 150 } 151 if((elemStyle.borderBottomStyle != "none") && (!isNaN(parseInt(elemStyle.borderBottomWidth)))) { 152 verticalBorder += parseInt(elemStyle.borderBottomWidth); 153 } 154 155 elemHeight = maxHeight - verticalPadding - verticalBorder; 156 elem.style.height = elemHeight + "px"; 157 } 158 } 159 160 161 162 /** 163 * 弿°ã«æå®ããè¦ç´ ã®ãã¡ãé«ããä¸çªå¤§ããè¦ç´ ãè¿ã 164 * @param elems 対象ã®è¦ç´ ã®éå 165 * @return é«ããä¸çªå¤§ããè¦ç´ 166 */ 167 function getMaxHeightElem(elems) { 168 169 var elemsCount = elems.length; 170 var maxHeightElem = null; 171 var maxHeight = 0; 172 173 for(var i=0; i<elemsCount; i++) { 174 elem = elems[i]; 175 if(maxHeight < elem.offsetHeight) { 176 maxHeight = elem.offsetHeight; 177 maxHeightElem = elem; 178 } 179 } 180 return maxHeightElem; 181 } 182 183 184 185 /** 186 * ç¹å®ã®ã¿ã°/classã«ä¸è´ããè¦ç´ ãåå¾ 187 * @param parentNode æ¤ç´¢ç¯å²ã®è¦ªã¨ãªãè¦ç´ 188 * @param tagName æ¤ç´¢ããã¿ã° 189 * @param classValue æ¤ç´¢ããclass屿§ 190 * @return ä¸è´ããè¦ç´ ã®é å 191 */ 192 function getElementsByTagAndClass(parentNode, tagName, classValue){ 193 194 var elementsByTag = parentNode.getElementsByTagName(tagName); 195 196 var elementsByTagAndClass = []; 197 198 //ã¿ã°åãä¸è´ããåããã 199 if(elementsByTag.length > 0){ 200 201 //弿°ã®classãçç¥ããã¦ãã 202 if((classValue == null)||(classValue == "")){ 203 return elementsByTag; 204 }else{ 205 206 var len = elementsByTag.length; 207 for(var i=0; i<len; i++){ 208 //弿°ã¨åãclassãæå®ããã¦ãã 209 if(hasClass(elementsByTag[i], classValue)){ 210 elementsByTagAndClass.push(elementsByTag[i]); 211 } 212 } 213 return elementsByTagAndClass; 214 } 215 } 216 return elementsByTagAndClass; 217 } 218 219 220 221 /** 222 * ç¹å®ã®classãæå®ããã¦ããã 223 * @param elem 対象ã®è¦ç´ 224 * @param classValue ãã§ãã¯ããclasså 225 * @return æå®ããã¦ãããã©ãã(true/false) 226 */ 227 function hasClass(elem, classValue){ 228 229 if(elem.className == "") return false;
230 231 var classText = elem.className; 232 233 //classãä¸ã¤ 234 if(classText.indexOf(" ") == -1){ 235 if(classText == classValue){ 236 return true; 237 }else{ 238 return false; 239 } 240 241 //classãè¤æ° 242 }else{ 243 var classes = classText.split(" "); 244 var len = classes.length; 245 for(var i=0; i<len; i++){ 246 if(classes[i] == classValue){ 247 return true; 248 } 249 } 250 return false; 251 } 252 } 253 254 255 256 /** 257 * ãªã¹ãã®è¨å® 258 */ 259 function addListener(elem, eventType, func, cap) { 260 if(elem.addEventListener) { 261 elem.addEventListener(eventType, func, cap); 262 } else if(elem.attachEvent) { 263 elem.attachEvent('on' + eventType, func); 264 } else { 265 return false; 266 } 267 } 268} 269
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.