PageSourceSearch

https://tonywack.co.kr/js/byapps.js?2502142

js tonywack.co.kr collected 2026-09-29 23:22:49 UTC 14,615 bytes, 233 lines download raw bytes

1var localStorageEnable = true;
2try { localStorage.setItem('BYAPPS_set_test', 'yes'); } catch (error) { localStorageEnable = false; }
3
4var byapps_launch_block = document.querySelector("#byapps_launch_block");
5var byapps_launch_button = document.querySelector("#byapps_launch_button");
6
7// 기본 인스톨 팝업
8function byapps_launch_install() {
9    if (navigator.userAgent.match(/iPhone|iPad|iPod/i) && !arguments[2]) return false;
10    if (byapps_launch_block) byapps_launch_block.parentNode.removeChild(byapps_launch_block);
11    if (byapps_launch_button) byapps_launch_button.parentNode.removeChild(byapps_launch_button);
12
13    var style = document.createElement('style');
14    style.innerHTML = "#byapps_launch_block { position:fixed;top:0;left:0;width:100%;height:100%;z-index:1002; }" +
15        "#byapps_launch_block > div:nth-child(1) { position:fixed;top:0;left:0;background:#000;opacity:0.3;width:100%;height:100%; }" +
16        "#byapps_wrapper { position:fixed; top:50%; left:50%; transform: translate(-50%, -50%); margin:auto; background-color:white; border-radius:20px; padding:20px; width:75%; box-shadow:0 0 20px rgba(0,0,0,0.5); text-align:center;z-index:9999; }" +
17        "#byapps_launch_title { font-size:20px; margin-bottom:20px; font-weight:bold; color:#333; }" +
18        "#byapps_launch_button { display:flex; flex-direction:column; align-items:center; margin-top:20px; }" +
19        "#byapps_launch_button .download { background-color:#3897f0; }" +
20        "#byapps_launch_button a { display: block; width: 90%; max-width: 300px; height: 40px; font-size: 16px; font-weight: bold; color: white; text-align: center; border-radius: 5px; cursor: pointer; line-height: 40px; margin-bottom: 10px; }" +
21        "#byapps_launch_button .web { position:fixed; top:110%;background-color:rgba(0, 0, 0, 0); color:#FFF; border:0px solid #e5e5e5;font-size:14px }";
22    var ref = document.querySelector('script');
23    ref.parentNode.insertBefore(style, ref);
24    var elem = "<div id='byapps_launch_block'><div></div>" +
25        "<div id='byapps_wrapper' style='display:block;'>" +
26        "<div id='byapps_launch_title'>앱으로 보면 더 편리해요!</div>" + 
27        "<div id='byapps_launch_button'>" +
28        "<a class='download' onclick=\"byapps_launch_action('app','" + arguments[0] + "','" + arguments[1] + "','" + arguments[2] + "')\">앱 설치하기 ></a>" +
29        "<a class='web' onclick=\"byapps_launch_action('web')\">웹페이지로 계속하기 ></a>" +
30        "</div></div>";
31    document.body.insertAdjacentHTML('afterend', elem);
32}
33
34// 기본 이미지 팝업
35function byapps_launch_popup() {
36    if (navigator.userAgent.match(/iPhone|iPad|iPod/i) && !arguments[2]) return false;
37    if (byapps_launch_block) byapps_launch_block.parentNode.removeChild(byapps_launch_block);
38    if (byapps_launch_button) byapps_launch_button.parentNode.removeChild(byapps_launch_button);
39
40    var style = document.createElement('style');
41    style.innerHTML = ".show { transition: opacity 300ms; }" +
42        ".hide { opacity: 0; }" +
43        "#byapps_launch_block { position:fixed; width:100%; height:100%; top:0; left:0; background-color:rgba(0, 0, 0, 0.7); z-index:1002; }" +
44        "#byapps_launch_button { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%); text-align:center; z-index:1002; }";
45    var ref = document.querySelector('script');
46    ref.parentNode.insertBefore(style, ref);
47
48    var elem = "<div id='byapps_launch_block'></div>" +
49        "<table id='byapps_launch_button' width='100%'><tr height='100%'><td>" +
50        "<a onclick=\"byapps_launch_action('app','" + arguments[0] + "','" + arguments[1] + "','" + arguments[2] + "')\">" +
51        "<img src='https://via.placeholder.com/600x400/FFF/000.png?text=APP+DOWNLOAD+600x400' width='80%' border='0'></a>" +
52        "<a onclick=\"byapps_launch_action('web')\">" +
53        "<img src='https://via.placeholder.com/600x40/0ec8a7/000.png?text=CLOSE' width='80%' border='0' style='margin-top: -2px;'></a>" +
54        "</td></tr></table>";
55    document.body.insertAdjacentHTML('afterend', elem);
56    document.querySelector('#byapps_launch_button').classList.add('show');
57    document.querySelector('#byapps_launch_button').classList.remove('hide');
58}
59
60// 얼럿 팝업
61function byapps_launch_alert() {
62    if (navigator.userAgent.match(/iPhone|iPad|iPod/i) && !arguments[2]) return false;
63    if (confirm(" 앱을 설치하시면 더욱 편리하게 이용할수 있습니다.\n설치하시겠습니까?")) byapps_launch_action('app', arguments[0], arguments[1], arguments[2]);
64    else byapps_launch_action('web');
65}
66
67//강제 이관 팝업
68function byapps_launch_update() {
69    if (navigator.userAgent.match(/iPhone|iPad|iPod/i) && !arguments[2]) return false;
70    if (byapps_launch_block) byapps_launch_block.parentNode.removeChild(byapps_launch_block);
71    if (byapps_launch_button) byapps_launch_button.parentNode.removeChild(byapps_launch_button);
72
73    var style = document.createElement('style');
74    style.innerHTML = "#byapps_launch_block { position:fixed;top:0;left:0;width:100%;height:100%;z-index:1002; }" +
75        "#byapps_launch_block > div:nth-child(1) { position:fixed;top:0;left:0;background:#000;opacity:0.3;width:100%;height:100%; }" +
76        "#byapps_wrapper { position:fixed; top:50%; left:50%; transform: translate(-50%, -50%); margin:auto; background-color:white; border-radius:20px; padding:20px; width:50%; box-shadow:0 0 20px rgba(0,0,0,0.5); text-align:center;z-index:9999; }" +
77        "#byapps_launch_title { font-size:20px; margin-bottom:20px; font-weight:bold; color:#333; }" +
78        "#byapps_launch_button { display:flex; flex-direction:column; align-items:center; margin-top:20px; }" +
79        "#byapps_launch_button .go_update { background-color:#444; }" +
80        "#byapps_launch_button a { display: block; width: 90%; max-width: 300px; height: 40px; font-size: 16px; font-weight: bold; color: white; text-align: center; border-radius: 5px; cursor: pointer; line-height: 40px; margin-bottom: 10px; }";
81    var ref = document.querySelector('script');
82    ref.parentNode.insertBefore(style, ref);
83    var elem = "<div id='byapps_launch_block'><div></div>" +
84        "<div id='byapps_wrapper' style='display:block;'>" +
85        "<div id='byapps_launch_title'>앱 업데이트가 있습니다.</div>" + 
86        "<div id='byapps_launch_button'>" +
87        "<a class='go_update' onclick=\"byapps_launch_action('app','" + arguments[0] + "','" + arguments[1] + "','" + arguments[2] + "')\">확인</a>" +
88        "</div></div>";
89    document.body.insertAdjacentHTML('afterend', elem);
90}
91
92//강제 이관 이미지 팝업
93function byapps_launch_img_update() {
94    if (navigator.userAgent.match(/iPhone|iPad|iPod/i) && !arguments[2]) return false;
95    if (byapps_launch_block) byapps_launch_block.parentNode.removeChild(byapps_launch_block);
96    if (byapps_launch_button) byapps_launch_button.parentNode.removeChild(byapps_launch_button);
97
98    var style = document.createElement('style');
99    style.innerHTML = ".show { transition: opacity 300ms; }" +
100        ".hide { opacity: 0; }" +
101        "#byapps_launch_block { position:fixed; width:100%; height:100%; top:0; left:0; background-color:rgba(0, 0, 0, 0.7); z-index:1002; }" +
102        "#byapps_launch_button { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%); text-align:center; z-index:1002; }";
103    var ref = document.querySelector('script');
104    ref.parentNode.insertBefore(style, ref);
105
106    var elem = "<div id='byapps_launch_block'></div>" +
107        "<table id='byapps_launch_button' width='100%'>" +
108        "<tr height='100%'><td>" +
109        "<a onclick=\"byapps_launch_action('app','" + arguments[0] + "','" + arguments[1] + "','" + arguments[2] + "')\">" +
110        "<img src='https://via.placeholder.com/600x400/FFF/000.png?text=APP+DOWNLOAD+600x400' width='60%' border='0'></a>" +
111        "<a onclick=\"byapps_launch_action('web')\"><img src='https://via.placeholder.com/600x40/0ec8a7/000.png?text=CLOSE' width='60%' border='0'></a>" +
112        "</td></tr></table>";
113    document.body.insertAdjacentHTML('afterend', elem);
114    document.querySelector('#byapps_launch_button').classList.add('show');
115    document.querySelector('#byapps_launch_button').classList.remove('hide');
116}
117
118//팝업 액션
119function byapps_launch_action(op, schm, pn, aid, link) {
120    if (op == "app") {
121        if (navigator.userAgent.match(/Android/i)) {
122            link = (link) ? "?openurl=" + encodeURIComponent(link) : "";
123            if (navigator.userAgent.match("Android4.4") || navigator.userAgent.match("Android 4.4") || (navigator.userAgent.toLocaleLowerCase().search("chrome") > -1 && navigator.appVersion.match(/Chrome\/\d+.\d+/)[0].split("/")[1] > 25)) {
124                self.location.href = "intent://" + schm + link + "#Intent;scheme=byapps://" + schm + ";action=android.intent.action.VIEW;category=android.intent.category.BROWSABLE;package=" + pn + ";S.browser_fallback_url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetail
124s%3Fid%3D" + pn + "%26referrer%3Dutm_source%3Dbyapps%26utm_medium%3Dlink%26utm_campaign%3Dinstall_popup;end";
125            } else {
126                var clickedAt = +new Date;
127                setTimeout(function () {
128                    if (+new Date - clickedAt < 1800) {
129                        location.href = "market://details?id=" + pn + "&referrer=utm_source%3Dbyapps%26utm_medium%3Dlink%26utm_campaign%3Dinstall_popup";
130                    }
131                }, 1500);
132                if (navigator.userAgent.match("Byapps")) location.href = "byapps://" + schm + link;
133                else location.href = "market://details?id=" + pn + "&referrer=utm_source%3Dbyapps%26utm_medium%3Dlink%26utm_campaign%3Dinstall_popup";
134            }
135        } else if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) {
136            link = (link) ? "?openurl=" + encodeURIComponent(link) : "";
137            var appstore_url = "https://itunes.apple.com/kr/app/id" + aid + "?mt=8";
138            var clickedAt = +new Date;
139            setTimeout(function () {
140                if (+new Date - clickedAt < 2000) {
141                    location.href = appstore_url;
142                }
143            }, 1500);
144            location.href = "byapps" + schm + "://" + link;
145        }
146    } else {
147        var visitnow = new Date();
148        visitnow.setDate(visitnow.getDate() + 2); //취소 누르면 2일 후에 팝업뜨도록
149
150        // 날짜 셋팅이 yyyy-mm-dd로 계산이 됨, 날짜 변경하기
151        var mhMonth = (visitnow.getMonth() + 1 < 10) ? "0" + (visitnow.getMonth() + 1) : visitnow.getMonth() + 1;
152        var mhDate = (visitnow.getDate() < 10) ? "0" + visitnow.getDate() : visitnow.getDate();
153        var visit_todate = visitnow.getFullYear() + "/" + mhMonth + "/" + mhDate;
154        byapps_setItem('BYAPPS_visit_date', visit_todate);
155
156        var byapps_launch_block = document.querySelector("#byapps_launch_block");
157        var byapps_launch_button = document.querySelector("#byapps_launch_button");
158        if (byapps_launch_block) byapps_launch_block.parentNode.removeChild(byapps_launch_block);
159        if (byapps_launch_button) byapps_launch_button.parentNode.removeChild(byapps_launch_button);
160    }
161}
162
163function byapps_setItem(k, v) {
164    if (localStorageEnable) localStorage.setItem(k, v);
165    else byapps_setCookie(k, v);
166}
167function byapps_getItem(k) {
168    if (localStorageEnable) return localStorage.getItem(k);
169    else return byapps_getCookie(k);
170}
171function byapps_removeItem(k) {
172    if (localStorageEnable) localStorage.removeItem(k);
173    else byapps_setCookie(k, '', -100);
174}
175function byapps_getCookie(cname) {
176    var name = cname + "=";
177    var ca = document.cookie.split(';');
178    for (var i = 0; i < ca.length; i++) {
179        var c = ca[i];
180        while (c.charAt(0) == ' ') c = c.substring(1);
181        if (c.indexOf(name) == 0) return decodeURIComponent(c.substring(name.length, c.length));
182    }
183    return "";
184}
185function byapps_setCookie(name, value, ex) {
186    if (!ex) ex = 365;
187    var todayDate = new Date();
188    todayDate.setDate(todayDate.getDate() + ex);
189    document.cookie = name + "=" + encodeURIComponent(value) + "; path=/; expires=" + todayDate.toGMTString() + ";"
190}
191
192function byapps_getOrderInfo(id, pr) {
193    if (navigator.userAgent.match('Byapps')) {
194        var price = pr;
195        price = Math.floor(price.replace(/[^0-9.]/g, ""));
196        var order_info = '{"order_id":"' + id + '","amount":' + price + '}';
197        alert('byapps://shopStat?' + order_info);
198    }
199}
200
201window.addEventListener('load', function () {
202    if (!navigator.userAgent.match('Byapps') && (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/iPhone|iPad|iPod/i))) {
203        var visitnow = new Date();
204        var BYAPPS_visit_count = byapps_getItem('BYAPPS_visit_count');
205        var BYAPPS_visit_date = byapps_getItem('BYAPPS_visit_date');
206        BYAPPS_visit_count = (!BYAPPS_visit_count) ? 1 : Number(BYAPPS_visit_count) + 1;
207
208        // 날짜 셋팅이 yyyy-mm-dd로 계산이 됨, 날짜 변경하기
209        var mhMonth = (visitnow.getMonth() + 1 < 10) ? "0" + (visitnow.getMonth() + 1) : visitnow.getMonth() + 1;
210        var mhDate = (visitnow.getDate() < 10) ? "0" + visitnow.getDate() : visitnow.getDate();
211        var visit_todate = visitnow.getFullYear() + "/" + mhMonth + "/" + mhDate;
212        var BYAPPS_visit_date = localStorage.getItem('BYAPPS_visit_date');
213
214        // BYAPPS_visit_count>2 3번클릭이동시 뜨도록
215        if (BYAPPS_visit_count > 2 && (!BYAPPS_visit_date || visit_todate >= BYAPPS_visit_date)) {
216            byapps_setItem('BYAPPS_visit_count', 0);                             // 카운팅 0 처리
217            byapps_launch_install('tonywack','com.tonywack.byapps','1495604720');          // 앱스키마, 패키지명, 앱스토어 id(레이어팝업)
218            //byapps_launch_popup('앱아이디','패키지명','앱스토어 id');          //이미지팝업
219            //byapps_launch_alert('앱아이디','패키지명','앱스토어 id');          //텍스트팝업
220        } else {
221            byapps_setItem('BYAPPS_visit_count', BYAPPS_visit_count);
222        }
223
224        // 뒤에 백그라운드 클릭시 2일 후에 다시 뜨도록 처리
225        if (document.getElementById("byapps_launch_block") !== null) {
226            window.addEventListener('click', function (e) {
227                if (document.querySelector("#byapps_wrapper") != null && !document.querySelector("#byapps_wrapper").contains(e.target)) {
228                    //byapps_launch_action('web');
229                }
230            });
231        };
232    }
233}, false);

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.