const platformTagPath = '/view/platform/banner'; const PLATFORM_TAG_DOM = getPlatformScriptTagDom(platformTagPath); loadPlatformContent("https://kyujin.navitime.co.jp/view/platform/banner?tag=false&addressCode=2020900700005214&page=address_pc", PLATFORM_TAG_DOM); function onLoadPlatformContent() { let baseQuery = new URLSearchParams("addressCode=2020900700005214&page=address_pc") let platformBannerImageContainer = document.querySelector('#kyujin-banner-image-container'); let platformBannerOfferContainer = document.querySelector('#kyujin-banner-offer-container'); let checkPlatformInView = function (event) { if (platformBannerImageContainer && isPlatformInViewport(platformBannerImageContainer)) { let platformBannerImageContainerDataset = document.getElementById('kyujin-banner-image-container').dataset let platformImpData = { "type": "image" } if (platformBannerImageContainerDataset.kyujinPlatformSearchAddressCode) { platformImpData["searchAddressCode"] = platformBannerImageContainerDataset.kyujinPlatformSearchAddressCode } if (platformBannerImageContainerDataset.kyujinPlatformSearchPage) { platformImpData["searchPage"] = platformBannerImageContainerDataset.kyujinPlatformSearchPage } inViewPlatform(platformImpData) window.removeEventListener('scroll', checkPlatformInView, false); } if (platformBannerOfferContainer && isPlatformInViewport(platformBannerOfferContainer)) { let platformBannerOfferContainerDataset = document.getElementById('kyujin-banner-offer-container').dataset let platformImpData = { "type": "offer" } if (platformBannerOfferContainerDataset.kyujinPlatformSearchAddressCode) { platformImpData["searchAddressCode"] = platformBannerOfferContainerDataset.kyujinPlatformSearchAddressCode } if (platformBannerOfferContainerDataset.kyujinPlatformOrganizationId) { platformImpData["organizationId"] = platformBannerOfferContainerDataset.kyujinPlatformOrganizationId } if (platformBannerOfferContainerDataset.kyujinPlatformOfferId) { platformImpData["offerId"] = platformBannerOfferContainerDataset.kyujinPlatformOfferId } if (platformBannerOfferContainerDataset.kyujinPlatformSearchPage) { platformImpData["searchPage"] = platformBannerOfferContainerDataset.kyujinPlatformSearchPage } if (baseQuery.has("arvNode")) { platformImpData["arvNode"] = baseQuery.get("arvNode") } if (baseQuery.has("depNode")) { platformImpData["depNode"] = baseQuery.get("depNode") } inViewPlatform(platformImpData) window.removeEventListener('scroll', checkPlatformInView, false); } }; window.addEventListener('scroll', checkPlatformInView, false); } function inViewPlatform(platformImpData) { const query_params = new URLSearchParams(platformImpData); fetch(`https://kyujin.navitime.co.jp/view/platform/banner/imp?${query_params}`) .then(response => {}) .catch(error => console.log(error)) } /*! * Determine if an element is in the viewport * (c) 2017 Chris Ferdinandi, MIT License, https://gomakethings.com * @param {Node} elem The element * @return {Boolean} Returns true if element is in the viewport */ let isPlatformInViewport = function (elem) { let distance = elem.getBoundingClientRect(); return ( distance.top >= 0 && distance.left >= 0 && distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) && distance.right <= (window.innerWidth || document.documentElement.clientWidth) ); }; function loadPlatformContent(requestUrl, tagDom) { fetch(requestUrl) .then(res => res.text()) .then((text) => { var div = document.createElement('div'); div.innerHTML = text tagDom.after(div); // スクリプトタグの後ろに挿入 onLoadPlatformContent(); }) .catch((err) => { console.log(err) }); } function getPlatformScriptTagDom(path, id=null) { const scripts = document.getElementsByTagName('script'); for (let i = 0; i < scripts.length; i++) { const url = scripts[i].src; if (url.indexOf(path) > -1) { if (id == null || id.length === 0) { return scripts[i]; } else { return document.getElementById(id); } } } }