const util = { isMobile() { return window.navigator.userAgent.match( /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|Symbian|Windows Phone)/i); }, loadJsAsync(src, async, attribute) { return new Promise((resolve, reject) => { const script = document.createElement("script"); script.src = src; script.async = async; if (attribute) { for (const key in attribute) { script.setAttribute(key, attribute[key]); } } const onload = () => { script.removeEventListener("load", onload); resolve(); }; script.addEventListener("load", onload); script.addEventListener("error", (err) => { script.removeEventListener("load", onload); console.error("loading js error: ", src, err); reject(new Error(`Failed to load ${src}`)); }); (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script); }); }, }; const adsObj = { googleAdSense: { ifLoadScript: false, loadScript({ adClientId, callbackFunc, propertyObj }) { if (!this.ifLoadScript) { const ADSENSE_URL = `https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js${adClientId ? '?client=' + adClientId : ''}`; util.loadJsAsync(ADSENSE_URL, true, { crossorigin: "anonymous", ...propertyObj }).then(() => { console.info("===> google ads sdk loaded"); this.ifLoadScript = true; callbackFunc && (callbackFunc instanceof Function) && callbackFunc(); }).catch((e) => { console.error(e); }); } }, displayAd() { (window.adsbygoogle = window.adsbygoogle || []).push({}); }, dealGoogleAdSize(ifLandscape) { const inses = document.querySelectorAll("ins.pageCtx_adsbygoogle"); if (inses && inses.length) { const insArray = Array.from(inses); if (insArray) { const size = { width: `300px`, height: `250px` } const width = window.innerWidth; if (width >= 340 || ifLandscape) { size.width = "336px"; size.height = "280px"; } insArray.forEach(insEle => { insEle.style.height = size.height; insEle.style.width = size.width; }) } } } }, adxAd: { ifLoadScript: false, loadScript({ adUnits, callbackFunc }) { if (!this.ifLoadScript) { const url = `https://securepubads.g.doubleclick.net/tag/js/gpt.js`; return util.loadJsAsync(url, true).then(() => { console.info("---> adx ads sdk loaded"); this.ifLoadScript = true; window.googletag = window.googletag || { cmd: [] }; const scriptEle = document.createElement("script"); scriptEle.text = this.defineAdUnitSlots(adUnits); document.getElementsByTagName("head")[0].appendChild(scriptEle); callbackFunc && (callbackFunc instanceof Function) && callbackFunc(); return this.ifLoadScript; }).catch((e) => { console.error(e); }); } else { return Promise.resolve(this.ifLoadScript); } }, showAd(type, ...params) { switch (type) { case 'banner2': this.showCommonAd2(...params); break; case 'ga': case 'zm': this.showCommonAd(...params); break; case 'an': this.showAN(...params); break; case 'ge': this.showGE(...params); break; case 'ge2': this.showGE2(...params); break; case 'ex': this.showEX(...params); break; default: console.log('Invalid Params'); break; } }, showCommonAd(...params) { const gameboxHeadAdOptions = { "adUnitCode": params[0], "elementId": params[1], "size": [300, 250] }; const adUnits = [{ adUnitCode: gameboxHeadAdOptions.adUnitCode, size: gameboxHeadAdOptions.size || [300, 250], elementId: gameboxHeadAdOptions.elementId || "div-gpt-ad-1" }]; if (params.length > 2) { adUnits.push({ adUnitCode: params[2], type: "INTERSTITIAL", }); } adsObj.adxAd.loadScript({ adUnits: adUnits }).then(flag => { if (flag) { adsObj.adxAd.addAdToContainer( gameboxHeadAdOptions.elementId || "div-gpt-ad-1", ".banner-ad", false, { style: 'min-width:300px;min-height:250px;text-align:center;margin-bottom:8px;' } ); } }); }, //banner2 ???? showCommonAd2(...params) { const gameboxHeadAdOptions = { "adUnitCode": params[0], "elementId": params[1], "size": [300, 250] }; const adUnits = [{ adUnitCode: gameboxHeadAdOptions.adUnitCode, size: gameboxHeadAdOptions.size || [300, 250], elementId: gameboxHeadAdOptions.elementId || "div-gpt-ad-2" }]; adsObj.adxAd.loadScript({ adUnits: adUnits }).then(flag => { if (flag) { adsObj.adxAd.addAdToContainer( gameboxHeadAdOptions.elementId || "div-gpt-ad-2", ".banner2-ad", false, { style: 'min-width:300px;min-height:250px;text-align:center;margin-bottom:8px;' } ); } }); }, showAN(...params) { let jsArr = [{ src: params[0], type: 'application/javascript', crossorigin: "anonymous" }]; this.loadJsScript(jsArr); }, showGE(...params) { let jsArr = [{ src: params[0], async: "true" }, { src: 'https://securepubads.g.doubleclick.net/tag/js/gpt.js', async: "true" }, ]; let jsCode = ` window.gnshbrequest = window.gnshbrequest || {cmd:[]}; window.gnshbrequest.cmd.push(function(){ window.gnshbrequest.forceInternalRequest(); }); `; this.addJsCodeToHead(jsCode); this.loadJsScript(jsArr); this.addGeContainer(params[1], '.banner-ad', true); if (params.length > 2) { this.addGeContainer(params[2], '.inner-ad', false); } }, showGE2(...params) { let jsArr = [{ src: params[0], async: "true" }, { src: 'https://securepubads.g.doubleclick.net/tag/js/gpt.js', async: "true" }, ]; let jsCode = ` window.gnshbrequest = window.gnshbrequest || {cmd:[]}; window.gnshbrequest.cmd.push(function(){ window.gnshbrequest.forceInternalRequest(); }); `; this.addJsCodeToHead(jsCode); this.loadJsScript(jsArr); this.addGeContainer(params[1], '.inner-ad', false); }, showEX(...params) { const containerEle = document.querySelector('.banner-ad'); if (containerEle) { var tmp = document.createDocumentFragment(); const p = document.createElement("p"); p.className = "ad-tips-top"; p.innerText = "Advertisement"; tmp.appendChild(p) const adv = document.createElement("div"); adv.setAttribute("data-adunitid", params[0]); adv.className = "adv gptslot"; tmp.appendChild(adv); containerEle.appendChild(tmp); } var linkTags = [{ rel: 'dns-prefetch', href: '//exmarketplace.com' }, { rel: 'preconnect', href: '//cdn.exmarketplace.com' }, { rel: 'preconnect', href: '//securepubads.g.doubleclick.net' } ]; var fragment = document.createDocumentFragment(); linkTags.forEach(function(tag) { var link = document.createElement('link'); Object.keys(tag).forEach(function(key) { link.setAttribute(key, tag[key]); }); fragment.appendChild(link); }); document.head.appendChild(fragment); let jsArr = [{ src: params[1], async: true, defer: true }]; this.loadJsScript(jsArr); }, loadJsScript(jsObjArr) { if (jsObjArr && jsObjArr.length > 0) { for (let js of jsObjArr) { util.loadJsAsync(js.src, true, js) } } }, addGeContainer(id, containerId, isBannerAd, propertyObj) { const adEle = document.createElement("div"); adEle.setAttribute("data-cptid", id); adEle.style.display = 'block'; if (propertyObj) { for (const key in propertyObj) { if (Object.hasOwnProperty.call(propertyObj, key)) { const value = propertyObj[key]; adEle.setAttribute(key, value); } } } const scriptEle = document.createElement("script"); scriptEle.text = ` window.gnshbrequest.cmd.push(function() { window.gnshbrequest.applyPassback("${id}", "[data-cptid='${id}']"); }); ` adEle.appendChild(scriptEle); const containerEle = document.querySelector(`${containerId}`); if (containerEle) { if (isBannerAd) { const p = document.createElement("p"); p.className = "ad-tips-top"; p.innerText = "Advertisement"; containerEle.appendChild(p) const adv = document.createElement("div"); adv.className = "adv"; adv.appendChild(adEle); containerEle.appendChild(adv); } else { containerEle.appendChild(adEle); } } return Promise.resolve(adEle); }, addJsCodeToHead(jsCode) { const scriptEle = document.createElement("script"); scriptEle.text = jsCode; document.getElementsByTagName("head")[0].appendChild(scriptEle); }, addAdToContainer(id, containerId, propertyObj) { const adEle = document.createElement("div"); adEle.setAttribute("id", id); if (propertyObj) { for (const key in propertyObj) { if (Object.hasOwnProperty.call(propertyObj, key)) { const value = propertyObj[key]; adEle.setAttribute(key, value); } } } const scriptEle = document.createElement("script"); scriptEle.text = `googletag.cmd.push(function() { googletag.display('${id}'); });` adEle.appendChild(scriptEle); const containerEle = document.querySelector(`${containerId}`); if (containerEle) { const p = document.createElement("p"); p.className = "ad-tips-top"; p.innerText = "Advertisement"; containerEle.appendChild(p) const adv = document.createElement("div"); adv.className = "adv"; adv.appendChild(adEle); containerEle.appendChild(adv); } return Promise.resolve(adEle); }, defineAdUnitSlots(adUnits = []) { const notDislayTypes = ['INTERSTITIAL', 'TOP_ANCHOR', 'BOTTOM_ANCHOR']; const outOfPageAdUnits = adUnits.filter(adUnit => notDislayTypes.includes(adUnit.type)); const displayAdUnits = adUnits.filter(adUnit => !notDislayTypes.includes(adUnit.type)); const outOfPageSlotStr = outOfPageAdUnits.map((adUnit, index) => { return ` const outOfPageSlot_${index} = googletag.defineOutOfPageSlot( '${adUnit.adUnitCode}', googletag.enums.OutOfPageFormat['${adUnit.type}']); if (outOfPageSlot_${index}) { outOfPageSlot_${index}.addService(googletag.pubads()); } ` }).join('\n') const slotStr = displayAdUnits.map(adUnit => { if (!(adUnit.adUnitCode && adUnit.size && adUnit.elementId)) { return ''; } return `googletag.defineSlot( "${adUnit.adUnitCode}", ${JSON.stringify(adUnit.size)}, "${adUnit.elementId}").addService(googletag.pubads());`; }).join('\n') return `googletag.cmd.push(function() { ${outOfPageSlotStr} ${slotStr} googletag.pubads().enableSingleRequest(); googletag.pubads().collapseEmptyDivs(); googletag.enableServices(); })` }, } } jQuery(document).ready(function() {var script = document.createElement("SCRIPT"); script.src = "https://www.googletagmanager.com/gtag/js?id=G-E2HGQJ2X2Y"; script.async = true; document.head.append(script); window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments) } gtag("js", new Date()); gtag("config", 'G-E2HGQJ2X2Y',{campaign:{source:"aff_57"}}); });