1var ZIPCODE_DAUM = function(){ 2 var $zipcodeContainer, $zipcodeLayer; 3 var $postCodeInput; 4 var $addressInput; 5 var $subAddress; // ìì´í°ìì input ë²ê·¸ë¡ ì¸í´ input ë°ë¡ ìì í¬ëª í div 6 var onComplete; 7 var onStart; 8 var onShow; 9 var onClose; 10 var type; 11 var $openKakaoAddressButton; 12 // Daum(primary) ì¬ì© ë¶ê° ì ìì²´ 주ì íì´ì§(fallback)ë¡ ì íí ì§ ì¬ë¶. 13 // init ìì ì ADDRESS_MODE ê°ì ëë í¬ì¤ì²´í¬ ê²°ê³¼ë¡ ê²°ì í ë¤ ìºì±íë¤. 14 // ê¸°ë³¸ê° false: í¬ì¤ì²´í¬ 미ìë£/ì¤í¨ ììë Daum ì¬ì© (기존 fail-open ëì ì ì§). 15 var useFallback = false; 16 var option = { 17 'addr_container' : null, 18 'addr_pop' : null, 19 'post_code' : null, 20 'addr' : null, 21 'height' : '', 22 'open_button' : null, 23 attachShowEventOnInput: true, 24 hideWhenClickOutside: true, 25 }; 26 27 var init = function(data) { 28 option = $.extend(option,data); 29 $zipcodeContainer = option.addr_container; 30 $zipcodeLayer = option.addr_pop; 31 $postCodeInput = option.post_code; 32 $addressInput = option.addr; 33 $openKakaoAddressButton = option.open_button; 34 $subAddress = option.sub_addr; 35 onComplete = option.onComplete; 36 onShow = option.onShow; 37 onStart = option.onStart; 38 onClose = option.onClose; 39 40 if(typeof onStart == 'function'){ 41 onStart(); 42 } 43 if($openKakaoAddressButton !== undefined && $openKakaoAddressButton !== null){ 44 $openKakaoAddressButton.off('click').on('click', function(){ 45 showFindAddress(); 46 }); 47 } 48 if($postCodeInput !== undefined && $postCodeInput !== null){ 49 $postCodeInput.off('click').on('click', function(){ 50 showFindAddress(); 51 }); 52 } 53 if($subAddress !== undefined && $subAddress !== null ){ 54 $subAddress.off('click').on('click', function(){ 55 showFindAddress(); 56 }); 57 } 58 59 if (option.attachShowEventOnInput) { 60 $addressInput.off('click').on('click', function(){ 61 showFindAddress(); 62 }); 63 } 64 65 // init ìì ì 1íë§ ê²°ì . ì´í showFindAddress í¸ì¶ ì ìºì±ë useFallback ê°ì¼ë¡ ë¶ê¸°íë¤. 66 resolveAddressProvider(); 67 }; 68 69 var resolveAddressProvider = function() { 70 // ADDRESS_MODEê° 'kakao'/'naver'ë¡ ê°ì ëì´ ìì¼ë©´ ìì²´ 주ì ê²ì íì´ì§(fallback) ì¬ì© 71 if (window.ADDRESS_MODE === 'kakao' || window.ADDRESS_MODE === 'naver') { 72 useFallback = true; 73 return; 74 } 75 76 // Daum 주ì ê²ì í¬ì¤ì²´í¬ 77 var controller = new AbortController(); 78 var timeoutId = setTimeout(function() { 79 controller.abort(); 80 // íììì ì Daum ì¬ì© (fallback ì í¨) 81 useFallback = false; 82 }, 3000); 83 84 fetch(TEST_SERVER ? 'https://gateway-platform.dev.imwebapis.com/address/health/daum' : 'https://gateway-platform.imwebapis.com/address/health/daum', { 85 method: 'GET', 86 signal: controller.signal 87 }) 88 .then(function(response) { 89 clearTimeout(timeoutId); 90 if (!response.ok) { 91 // HTTP ì¤ë¥ ì Daum ì¬ì© 92 useFallback = false; 93 return null; 94 } 95 return response.json(); 96 }) 97 .then(function(data) { 98 // isHealthyê° ëª ìì ì¼ë¡ falseì¼ ëë§ fallback ì¬ì© 99 useFallback = !!(data && data.isHealthy === false); 100 }) 101 .catch(function(error) { 102 clearTimeout(timeoutId); 103 // ë¤í¸ìí¬ ì¤ë¥ ë± í¬ì¤ì²´í¬ í¸ì¶ ì¤í¨ ì Daum ì¬ì© 104 useFallback = false; 105 }); 106 }; 107 108 var hideFindAddress = function() { 109 $zipcodeContainer.hide(); 110 $zipcodeContainer.parent('div._widget_data').removeClass('address-open'); 111 if(typeof onClose == 'function'){ 112 onClose(); 113 } 114 }; 115 116 var showFindAddress = function() { 117 // init ìì resolveAddressProviderìì ê²°ì /ìºì±í useFallback ê°ì¼ë¡ ë¶ê¸° 118 if (useFallback) { 119 useCustomAddressPage(); 120 } else { 121 useDaumPostcode(); 122 } 123 }; 124 125 var useCustomAddressPage = function() { 126 // ìì²´ ì ì 주ì ê²ì íì´ì§ 127 // 기존 iframe ì ê±° 128 $zipcodeLayer.empty(); 129 130 var iframe = document.createElement('iframe'); 131 iframe.src = '/_/address/'; 132 iframe.style.width = '100%'; 133 iframe.style.height = (!isNaN(option.height) && option.height !== '') ? option.height + 'px' : (option.height || '400px'); 134 iframe.style.background = '#fff'; 135 iframe.style.border = 'none'; 136 $zipcodeLayer.get(0).appendChild(iframe); 137 138 // ë©ìì§ í¸ë¤ë¬ í¨ì ì ì 139 var messageHandler = function(event) { 140 if (event.data.type === 'ADDRESS_SELECTED') { 141 const { address, postalCode } = event.data; 142 $postCodeInput.val(postalCode); 143 $addressInput.val(address); 144 hideFindAddress(); 145 onComplete({zonecode: postalCode, addressEnglish: ',,,,', jibunAddressEnglish: ',,,,'}, address); 146 147 // ì´ë²¤í¸ 리ì¤ë ì ê±° 148 window.removeEventListener('message', messageHandler); 149 } 150 }; 151 152 window.addEventListener('message', messageHandler); 153 154 // iframeì ë£ì element를 ë³´ì´ê² íë¤. 155 $zipcodeContainer.show(); 156 $zipcodeContainer.parent('div._widget_data').addClass('address-open'); 157 158 if(typeof onShow == 'function'){ 159 onShow(); 160 } 161 162 if (option.hideWhenClickOutside) { 163 $(document).find('body').off('mousedown.zipcode').on('mousedown.zipcode', function() { 164 hideFindAddress(); 165 $(this).off('mousedown.zipcode'); 166 }); 167 } 168 }; 169 170 var useDaumPostcode = function() { 171 new kakao.Postcode({ 172 oncomplete: function(data) { 173 // ê²ìê²°ê³¼ í목ì í´ë¦íìë ì¤íí ì½ë를 ìì±íë ë¶ë¶. 174 175 // ê° ì£¼ìì ë ¸ì¶ ê·ì¹ì ë°ë¼ 주ì를 ì¡°í©íë¤. 176 // ë´ë ¤ì¤ë ë³ìê° ê°ì´ ìë ê²½ì°ì 공백('')ê°ì ê°ì§ë¯ë¡, ì´ë¥¼ ì°¸ê³ íì¬ ë¶ê¸° íë¤. 177 var fullAddr = data.address; // ìµì¢ 주ì ë³ì 178 var extraAddr = ''; // ì¡°í©í 주ì ë³ì 179 180 // 기본 주ìê° ëë¡ëª íì ì¼ë ì¡°í©íë¤. 181 if(data.addressType === 'R'){ 182 //ë²ì ëëª ì´ ìì ê²½ì° ì¶ê°íë¤. 183 if(data.bname !== ''){ 184 extraAddr += data.bname; 185 } 186 // ê±´ë¬¼ëª ì´ ìì ê²½ì° ì¶ê°íë¤. 187 if(data.buildingName !== ''){ 188 extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName); 189 } 190 // ì¡°í©í주ìì ì 무ì ë°ë¼ ì쪽ì ê´í¸ë¥¼ ì¶ê°íì¬ ìµì¢ 주ì를 ë§ë ë¤. 191 fullAddr += (extraAddr !== '' ? ' ('+ extraAddr +')' : ''); 192 } 193 194 // ì°í¸ë²í¸ì 주ì ì 보를 í´ë¹ íëì ë£ëë¤. 195 $postCodeInput.val(data.zonecode); //5ì리 ìì°í¸ë²í¸ ì¬ì© 196 $addressInput.val(fullAddr); 197 //document.getElementById('sample2_addressEnglish').value = data.addressEnglish; 198 199 // iframeì ë£ì element를 ìë³´ì´ê² íë¤. 200 // (autoClose:false 기ë¥ì ì´ì©íë¤ë©´, ìë ì½ë를 ì ê±°í´ì¼ íë©´ìì ì¬ë¼ì§ì§ ìëë¤.) 201 hideFindAddress(data); 202 203 onComplete(data, fullAddr); 204 }, 205 width :'100%', 206 height: option.height 207 }).embed($zipcodeLayer.get(0)); 208 209 // iframeì ë£ì element를 ë³´ì´ê² íë¤. 210 $zipcodeContainer.show(); 211 $zipcodeContainer.parent('div._widget_data').addClass('address-open'); 212 213 if(typeof onShow == 'function'){ 214 onShow(); 215 } 216 217 if (option.hideWhenClickOutside) { 218 $(document).find('body').off('mousedown.zipcode').on('mousedown.zipcode', function() { 219 hideFindAddress(); 220 $(this).off('mousedown.zipcode'); 221 }); 222 } 223 }; 224 225 return { 226 'init' : function(data){ 227 init(data); 228 }, 229 'showFindAddress' : function(){ 230 showFindAddress(); 231 }, 232 'hideFindAddress' : function(){ 233 hideFindAddress(); 234 } 235 } 236};
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.