1(function(){ 2 function QueryParamHandler(p) { 3 var self = this; // `this`ã`self`ã«ä»£å ¥ãã¦ä¿æ 4 5 this.currentPath = window.location.origin + window.location.pathname; 6 7 this.isSendPath = p.validSendPaths.indexOf("*") !== -1 8 ? true 9 : p.validSendPaths.some(function(validSendPaths2) { 10 return self.currentPath === validSendPaths2; 11 }); 12 13 this.isApplyLink = p.validApplyLink.length > 0; 14 this.validApplyLink = p.validApplyLink; 15 16 // â¼ applyStoredParamsã§ã¯ã¨ãªãã©ã¡ã¼ã¿ãå¼ãç¶ããªããã¼ 17 this.excludeKeys = Array.isArray(p.excludeKeys) ? p.excludeKeys : []; 18 } 19 20 QueryParamHandler.prototype.init = function () { 21 var self = this; // `this`ã`self`ã«ä»£å ¥ãã¦ä¿æ 22 23 // ã¯ã¨ãªãã©ã¡ã¼ã¿ãsessionStorageã«ä¿å 24 this.saveQueryParamsToStorage(); 25 26 // 対象ãã¹ã®å ´åã®ã¿ãä¿åããã¯ã¨ãªãã©ã¡ã¼ã¿ãç¾å¨ã®URLã«åæ 27 if (this.isSendPath) { 28 this.applyStoredParams(); 29 } 30 31 // 対象ãªã³ã¯ãè¨å®ããã¦ããå ´åã®ã¿ãä¿åããã¯ã¨ãªãã©ã¡ã¼ã¿ããªã³ã¯ã«åæ 32 if (this.isApplyLink) { 33 if (document.readyState === 'loading') { 34 document.addEventListener('DOMContentLoaded', function () { 35 self.applyLinksStoredParams(self.validApplyLink); 36 }); 37 } else { 38 this.applyLinksStoredParams(this.validApplyLink); 39 } 40 } 41 42 // ã¯ã¨ãªãã©ã¡ã¼ã¿ã®å¦çå®äºãã¤ãã³ãã§éç¥ 43 this.notifyLoaded(); 44 }; 45 46 QueryParamHandler.prototype.notifyLoaded = function () { 47 var event; 48 if (typeof Event === 'function') { 49 event = new Event('queryParamHandlerLoaded'); 50 } else { 51 event = document.createEvent('Event'); 52 event.initEvent('queryParamHandlerLoaded', true, true); 53 } 54 window.dispatchEvent(event); 55 }; 56 57 QueryParamHandler.prototype.getQueryParams = function() { 58 var params = new URLSearchParams(window.location.search); 59 var queryParams = {}; 60 params.forEach(function(value, key) { 61 queryParams[key] = value; 62 }); 63 return queryParams; 64 }; 65 66 /* --------------------------------------------------- 67 â¼ ã¯ã¨ãªãã©ã¡ã¼ã¿ã®ä¿åå¦ç 68 --------------------------------------------------- */ 69 QueryParamHandler.prototype.saveQueryParamsToStorage = function() { 70 var params = this.getQueryParams(); 71 72 // sessionStorageã«ä¿åããã¦ããã¯ã¨ãªãã©ã¡ã¼ã¿ãåå¾ 73 var storedParams = this.getStoredQueryParams(); 74 75 // ç¾å¨ã®ã¯ã¨ãªãã©ã¡ã¼ã¿ãæ¢åã®å¤ã«ãã¼ã¸ 76 // åããã¼ãåå¨ããå ´åã¯ç¾å¨ã®å¤ã§ä¸æ¸ãããæ°ãããã¼ã¯è¿½å 77 var mergedParams = Object.assign({}, storedParams, params); 78 79 // ãã¼ã¸ããã¯ã¨ãªãã©ã¡ã¼ã¿ãsessionStorageã«ä¿å 80 sessionStorage.setItem('queryParams', JSON.stringify(mergedParams)); 81 }; 82 83 QueryParamHandler.prototype.getStoredQueryParams = function() { 84 var storedParams = sessionStorage.getItem('queryParams'); 85 return storedParams ? JSON.parse(storedParams) : {}; 86 }; 87 88 /* --------------------------------------------------- 89 â¼ ä¿åããã¯ã¨ãªãã©ã¡ã¼ã¿ã®åæ å¦ç 90 ç¾å¨ã®URLã«ä¿åæ¸ã¿ã®ã¯ã¨ãªãã©ã¡ã¼ã¿ãåæ ããã 91 --------------------------------------------------- */ 92 QueryParamHandler.prototype.applyStoredParams = function() { 93 var storedParams = this.getStoredQueryParams(); 94 var currentParams = this.getQueryParams(); 95 96 // â¼ é¤å¤å¯¾è±¡ã®ãã¼ãåãé¤ã 97 var filteredStoredParams = {}; 98 for (var key in storedParams) { 99 if (this.excludeKeys.indexOf(key) === -1) { 100 filteredStoredParams[key] = storedParams[key]; 101 } 102 } 103 104 // ç¾å¨ã®ã¯ã¨ãªãã©ã¡ã¼ã¿ã¨ä¿åæ¸ã¿ã®ã¯ã¨ãªãã©ã¡ã¼ã¿ããã¼ã¸ 105 var mergedParams = Object.assign({}
105, currentParams, filteredStoredParams); 106 var newParams = new URLSearchParams(mergedParams).toString(); 107 108 if (newParams) { 109 var currentUrl = new URL(window.location.href); 110 if (currentUrl.search !== "?" + newParams) { 111 currentUrl.search = newParams; 112 window.history.replaceState({}, '', currentUrl.toString()); 113 } 114 } 115 }; 116 117 /* --------------------------------------------------- 118 ⼠対象ãªã³ã¯ã¸ã®ã¯ã¨ãªãã©ã¡ã¼ã¿åæ å¦ç 119 対象ãªã³ã¯ã®hrefã«ä¿åæ¸ã¿ã®ã¯ã¨ãªãã©ã¡ã¼ã¿ãä»ä¸ããã 120 é¤å¤å¯¾è±¡ã®ãã¼ã¯ä»ä¸ããªãã 121 --------------------------------------------------- */ 122 QueryParamHandler.prototype.applyLinksStoredParams = function(validApplyLink) { 123 var self = this; 124 var paramKey = 'source_url'; 125 var paramValue = window.location.href; // ç¾å¨ã®ãã¼ã¸ã®URL 126 127 // sessionStorageã«ä¿åããã¦ããã¯ã¨ãªãã©ã¡ã¼ã¿ãåå¾ 128 var storedParams = this.getStoredQueryParams(); 129 130 // â¼ é¤å¤å¯¾è±¡ã®ãã¼ãåãé¤ã 131 var filteredStoredParams = {}; 132 for (var key in storedParams) { 133 if (this.excludeKeys.indexOf(key) === -1) { 134 filteredStoredParams[key] = storedParams[key]; 135 } 136 } 137 138 // ãã¼ã¸å ã®ãã¹ã¦ã®ãªã³ã¯ãåå¾ 139 var links = document.querySelectorAll('a'); 140 for (var i = 0; i < links.length; i++) { 141 this.processLink(links[i], validApplyLink, filteredStoredParams, paramKey, paramValue); 142 } 143 144 // â¼ MutationObserver ã«ããåçç£è¦ã®è¿½å 145 if (!this.observer) { 146 this.observer = new MutationObserver(function(mutations) { 147 mutations.forEach(function(mutation) { 148 if (mutation.type === 'childList') { 149 mutation.addedNodes.forEach(function(node) { 150 if (node.nodeName === 'A') { 151 self.processLink(node, validApplyLink, filteredStoredParams, paramKey, paramValue); 152 } else if (node.querySelectorAll) { 153 var newLinks = node.querySelectorAll('a'); 154 newLinks.forEach(function(link) { 155 self.processLink(link, validApplyLink, filteredStoredParams, paramKey, paramValue); 156 }); 157 } 158 }); 159 } else if (mutation.type === 'attributes' && mutation.attributeName === 'href') { 160 self.processLink(mutation.target, validApplyLink, filteredStoredParams, paramKey, paramValue); 161 } 162 }); 163 }); 164 this.observer.observe(document.body, { 165 childList: true, 166 subtree: true, 167 attributes: true, 168 attributeFilter: ['href'] 169 }); 170 } 171 }; 172 173 /** 174 * åå¥ãªã³ã¯ã®å¤å®ã¨ãã©ã¡ã¼ã¿ä»ä¸ 175 */ 176 QueryParamHandler.prototype.processLink = function(a, validApplyLink, filteredStoredParams, paramKey, paramValue) { 177 var href = a.getAttribute('href'); 178 if (!href || href.indexOf('javascript:') === 0 || href.indexOf('#') === 0) return; 179 180 var result = this.getTargetUrlFromHref(a.href); 181 var targetUrl = result.url; 182 var isAdlpo = result.isAdlpo; 183 184 var matched = false; 185 try { 186 var urlObj = new URL(targetUrl, window.location.origin); 187 for (var j = 0; j < validApplyLink.length; j++) { 188 if (urlObj.href.indexOf(validApplyLink[j]) === 0) { 189 matched = true; 190 break; 191 } 192 } 193 } catch (e) { 194 matched = false; 195 } 196 197 if (matched) { 198 var finalUrl = new URL(targetUrl, window.location.origin); 199 200 // â¼ é¤å¤å¾ã®ä¿åæ¸ã¿ãã©ã¡ã¼ã¿ãä»ä¸ 201 for (var key in filteredStoredParams) { 202 finalUrl.searchParams.set(key, filteredStoredParams[key]); 203 } 204 205 // 追å ã® source_url ãã©ã¡ã¼ã¿ 206 finalUrl.searchParams.set(paramKey, paramValue); 207 208 if (isAdlpo) { 209 // adlpo ã®å ´å㯠ul ãã©ã¡ã¼ã¿ãå·®ãæ¿ãã 210 var adlpoUrl = new URL(a.href);
211 var newFinalUrlStr = finalUrl.toString(); 212 if (adlpoUrl.searchParams.get('ul') !== newFinalUrlStr) { 213 adlpoUrl.searchParams.set('ul', newFinalUrlStr); 214 a.href = adlpoUrl.toString(); 215 } 216 } else { 217 var newUrlStr = finalUrl.toString(); 218 if (a.href !== newUrlStr) { 219 a.href = newUrlStr; 220 } 221 } 222 } 223 }; 224 225 /** 226 * href ããå®ä½ã¨ãªã URL ãæ½åºãã 227 * adlpo.com ã®å ´å㯠ul ãã©ã¡ã¼ã¿ããæ½åº 228 */ 229 QueryParamHandler.prototype.getTargetUrlFromHref = function(href) { 230 try { 231 var url = new URL(href, window.location.origin); 232 if (url.hostname.indexOf('adlpo.com') !== -1 && url.searchParams.has('ul')) { 233 return { 234 url: decodeURIComponent(url.searchParams.get('ul')), 235 isAdlpo: true 236 }; 237 } 238 } catch (e) {} 239 return { 240 url: href, 241 isAdlpo: false 242 }; 243 }; 244 245 /* --------------------------------------------------- 246 â¼ åæè¨å®ã¨QueryParamHandlerã®åæå 247 --------------------------------------------------- */ 248 (function(){ 249 var params = { 250 // ã¯ã¨ãªãã©ã¡ã¼ã¿ãå¼ãç¶ã対象ãã¼ã¸ 251 validSendPaths : [ 252 "https://www.trygroup.co.jp/eiken/request/", 253 "https://www.trygroup.co.jp/study-support/request/", 254 "https://www.trygroup.co.jp/study-support/reserve/", 255 "https://www.trygroup.co.jp/request/english/", 256 "https://www.trygroup.co.jp/request/english/confirm/", 257 "https://www.trygroup.co.jp/request/english/finish/", 258 "https://develop-preview.trygroup.co.jp/eiken/request/", 259 "https://develop-preview.trygroup.co.jp/study-support/request/", 260 "https://develop-preview.trygroup.co.jp/study-support/reserve/", 261 "https://develop-preview.trygroup.co.jp/request/english/", 262 "https://develop-preview.trygroup.co.jp/request/english/confirm/", 263 "https://develop-preview.trygroup.co.jp/request/english/finish/", 264 ], 265 // URLã«ä¿åæ¸ã¿ã®ã¯ã¨ãªãã©ã¡ã¼ã¿ãä»ä¸ãã対象ãªã³ã¯ 266 validApplyLink : [ 267 "https://www.trygroup.co.jp/request/", 268 "https://www.trygroup.co.jp/online/request/", 269 "https://develop-preview.trygroup.co.jp/request/", 270 "https://develop-preview.trygroup.co.jp/online/request/", 271 ], 272 // ã¯ã¨ãªãã©ã¡ã¼ã¿ã®å¼ãç¶ãããé¤å¤ãããã¼ 273 excludeKeys : [ 274 "request_materials-1", 275 "soudan-1", 276 "price-1", 277 "_kz_embed", 278 "_kz_cse", 279 "_kzs_var_id", 280 "ptengine-event-explore", 281 "ptengine-url-type", 282 "target-url", 283 "pt_sid", 284 "ptengine_heatmap_token", 285 "pt_lang", 286 "pt_slpo", 287 "pt_extensions", 288 "ptengine_heatmap_iframe", 289 "pt-device", 290 "ptengine_campaign_version_id", 291 "ptengine_editor_iframe", 292 "pt_smart_report", 293 ] 294 }; 295 296 window.queryParamHandler = new QueryParamHandler(params); 297 window.queryParamHandler.init(); 298 299 })(); 300})();
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.