1// external_modal.js 2// å¤é¨ãªã³ã¯ãªãã¢ã¼ãã«ã§é·ç§»ã®ç¢ºèªãè¡ã 3// å é¨ãªã³ã¯ã¾ãã¯ãã¯ã¤ããªã¹ãã«ç»é²ããURLã¯ã¢ã¼ãã«ãåºããªãããæ¯ãåããå¦ç 4 5// 絶対ãã¹ã®èª¿æ» 6// å é¨ãªã³ã¯ã§ããã°http(s)ããå§ã¾ããã¨ã¯ãªããã¨ãåæ 7function is_external(href){ 8 var target = href; 9 var is_external; 10 11 if (target.indexOf('http') !== -1) { 12 13 // http ããå§ã¾ã£ã¦ããã®ã§çµ¶å¯¾ãã¹ 14 is_external = true; 15 16 } else { 17 18 // 絶対ãã¹ã§ã¯ãªã 19 is_external = false; 20 } 21 22 return is_external; 23} 24 25// ãã¯ã¤ããªã¹ã対象ã®èª¿æ» 26function is_whitelist(value){ 27 var is_whitelist; 28 29 // ãã¯ã¤ããªã¹ãã«å®ç¾©ããã¦ãããã®ã¯é常ãªã³ã¯ 30 var whitelist = [ 31 //以ä¸ã®ãã¡ã¤ã³ã«ããããããã®ã¯ã¢ã¼ãã«å¦çããªã 32 //ã«ã³ãåºåãã§è¤æ°ç»é²å¯ããã¡ã¤ã³ã¯ã·ã³ã°ã«ã¯ã©ã¼ãã¼ã·ã§ã³ã§å²ã 33 //â»ãããã³ã«ã¯ä¸è¦ 34 //â»ãµããã¡ã¤ã³ã¯å¤å¥ããªããããè¤æ°ããå ´åã¯ååæå®ãã 35 'www.teijin-pharma.co.jp', 36 'medical.teijin-pharma.co.jp', 37 'www.teijin-pharma.com', 38 ] 39 40 // ã¯ãªãã¯ããaã¿ã°ã«æå®ããã¦ããURLã®ãã¡ã¤ã³ãåå¾ 41 // ã¹ã©ãã·ã¥ã§ãã¼ã¹ãã3ã¤ç®ã®å¤ããã¡ã¤ã³ã¨ãã 42 // -> ["http:", "", "www.example.com"] 43 // ^^^^^^^^^^^^^^^ 44 var target = value.split('/', 3); 45 46 if (whitelist.indexOf(target[2]) !== -1) { 47 48 //ãã¯ã¤ããªã¹ã対象ã ã£ãå ´å 49 is_whitelist = true; 50 51 } else { 52 53 //ãã¯ã¤ããªã¹ã対象ãããªãã£ãå ´å 54 is_whitelist = false; 55 56 } 57 58 return is_whitelist; 59} 60 61// ã¢ã¼ãã«çæ 62function modal_generate (href){ 63 var modal_markup = 64 '<div class="c_modal_wrapper">' + 65 '<div class="c_modal_bg" data="c_modal_close"></div>' + 66 '<div class="c_modal_body">' + 67 '<div class="c_modal_close" data="c_modal_close">Close</div>' + 68 '<div class="c_modal_title">ãã®ãã¼ã¸ããå ã¯ãTEIJIN PHARMAãããé¢ãã¾ãã</div>' + 69 '<div class="c_modal_content">' + 70 '<p class="c_modal_message"><span class="c_modal_target"></span> ã¸ç§»åãã¾ããã</p>' + 71 '<div class="c_modal_buttons">' + 72 '<a target="_blank" class="c_modal_external-link" rel="nofollow">ã¯ã</a>' + 73 '<div class="c_modal_external-close" data="c_modal_close">ããã</div>' + 74 '</div>' + 75 '</div>' + 76 '</div>' + 77 '</div>'; 78 79 // ã¢ã¼ãã«ããã¼ã¸æ«å°¾ï¼</body>ç´åï¼ã«è¿½å ãã 80 $('body').append(modal_markup); 81 82 // 対象URLãä»£å ¥ãã 83 $('.c_modal_target').text(href); 84 $('.c_modal_external-link').attr('href', href); 85} 86 87// ã¢ã¼ãã«ãéããéã®ã¹ã¯ãã¼ã«ææ¢ããå¤è¨å®é¢æ° 88function modal_body_pos(position, width, top, duration){ 89 if (top > 0){ 90 top = top * -1; 91 } 92 setTimeout(function(){ 93 $('body').css({ 94 "position": position, 95 "width": width, 96 "top": top 97 }); 98 },duration); 99} 100 101// ã¢ã¼ãã«éã 102function modal_launch(href, pos){ 103 104 // ã¢ã¼ãã«ãéãã¦ããéã¯bodyã®ã¹ã¯ãã¼ã«ãææ¢ãã 105 modal_body_pos('fixed', '100%', pos, 300); 106 107 // ã¢ã¼ãã«ãéã 108 $('.c_modal_wrapper').fadeIn(300); 109 110 // ã¢ã¼ãã«ã®è¡¨ç¤ºä½ç½®è£æ£ 111 var c_modal_body = $('.c_modal_body'); 112 var c_modal_height = c_modal_body.outerHeight(); 113 $(c_modal_body).css('margin-top', c_modal_height * -0.5); 114} 115 116// ã¢ã¼ãã«éãã 117function modal_close(delay){ 118 119 // ã¢ã¼ãã«ãé表示 120 $('.c_modal_wrapper').fadeOut(delay); 121 122 // ã¢ã¼ãã«ãéããéã«ã¹ã¯ãã¼ã«ããbodyãå ã«æ»ã 123 modal_body_pos('', '', '', delay); 124 modal_remove(delay+1); 125} 126 127// ã¢ã¼ãã«ç ´æ£ 128function modal_remove(delay){ 129 130 setTimeout(function(){ 131 $('.c_modal_wrapper').remove(); 132 },delay); 133} 134 135$(function(){ 136 137 var scroll; 138 var is_production = true; 139 140 // aã¿ã°ãã¯ãªãã¯ãããå¦çéå§ 141 // ã¢ã¼ãã«å ã®aã¿ã°ã¯å¯¾è±¡å¤ã¨ãã 142 $('a:not(.c_modal_external-link)').on('click', function(e) { 143 144 // 空ãªã³ã¯ã»#ã»javascript:voidãªã©ã¯ç¡è¦ 145 if (!href || href.startsWith('#') || href.startsWith('javascript')) return; 146 147 // ãªã³ã¯ã®æå®å ãåå¾ 148 var href = $(this).attr('href'); 149 // ç¾å¨ã®ã¹ã¯ãã¼ã«å¤ãåå¾ 150 scroll = $(document).scrollTop(); 151 152 // å¤é¨ãªã³ã¯ãã®ãã§ã㯠153 is_external(href); 154 155 if(is_external(href) == true){ 156 157 // å¤é¨ãµã¤ããªã®ã§ãã¯ã¤ããªã¹ãããã§ã㯠158 is_whitelist(href); 159 160 if(is_whitelist(href) == false){ 161 162 // å¤é¨ãªã³ã¯ã§ããããã¯ã¤ããªã¹ã対象å¤ã§ãã 163 // ã¢ã¼ãã«ãåºãã®ã§ããã§ãªã³ã¯ãããªããã 164 e.preventDefault(); 165 166 // ã¢ã¼ãã«ãçæã»è¡¨ç¤ºãã 167 modal_generate(href); 168 modal_launch(href, scroll); 169 170 // å¦ççµäº 171 return false;
172 173 } else { 174 175 // å¤é¨ãªã³ã¯ã§ããããã¯ã¤ããªã¹ã対象ã§ãã 176 // é常éãã®ãªã³ã¯å¦çãå®è¡ããã 177 178 } 179 } 180 181 }); 182 183 // ã¢ã¼ãã«éãã 184 $(document).on('click', '[data="c_modal_close"]', function() { 185 186 var delay = 300; 187 188 modal_close(delay); 189 190 // bodyãåºå®ããå¤ãåå¾ããã¢ã¼ãã«ãéããæã®ã¹ã¯ãã¼ã«ä½ç½®ã«å¾©å 191 var scroll_locked = scroll; 192 setTimeout(function(){ 193 $(window).scrollTop(scroll_locked); 194 },delay); 195 }); 196 197 // ã¦ã£ã³ãã¦ãµã¤ãºã夿´ããå ´åã¯å³æã¢ã¼ãã«ãéãã 198 $(window).resize(function() { 199 200 var delay = 0; 201 202 modal_close(delay); 203 204 // bodyãåºå®ããå¤ãåå¾ããã¢ã¼ãã«ãéããæã®ã¹ã¯ãã¼ã«ä½ç½®ã«å¾©å 205 var scroll_locked = scroll; 206 setTimeout(function(){ 207 $(window).scrollTop(scroll_locked); 208 },delay); 209 }); 210 211});
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.