PageSourceSearch

https://yono-vip-apk.netlify.app/static/js/rlp.js

js yono-vip-apk.netlify.app collected 2026-10-03 11:38:12 UTC 10,860 bytes, 395 lines download raw bytes

1
2(function(){
3  // modal
4  const overlay=document.querySelector('.modalOverlay');
5  function openModal(id){
6    const m=document.getElementById(id);
7    if(!m) return;
8    overlay && overlay.classList.add('open');
9    m.classList.add('open');
10    m.style.display='flex';
11  }
12  function closeAll(){
13    document.querySelectorAll('.modal').forEach(m=>{m.classList.remove('open'); m.style.display='none';});
14    overlay && overlay.classList.remove('open');
15  }
16  document.querySelectorAll('[data-modal]').forEach(el=>{
17    el.addEventListener('click',()=>openModal(el.getAttribute('data-modal')));
18  });
19  document.querySelectorAll('[data-close]').forEach(el=>el.addEventListener('click',closeAll));
20  overlay && overlay.addEventListener('click',closeAll);
21
22  // categories + search (list pages)
23  function setCat(cat){
24    document.querySelectorAll('.cats button').forEach(b=>b.classList.toggle('active', b.dataset.cat===cat));
25    document.querySelectorAll('[data-item]').forEach(it=>{
26      const c=it.dataset.cat||'best';
27      it.style.display = (cat===c) ? '' : 'none';
28    });
29  }
30  window.rlpCat=setCat;
31
32  const search=document.getElementById('rlp-search');
33  window.rlpSearch=function(val){
34    const q=(val||'').toLowerCase().trim();
35    document.querySelectorAll('[data-item]').forEach(it=>{
36      const t=(it.dataset.title||'').toLowerCase();
37      it.style.display = t.includes(q) ? '' : 'none';
38    });
39  }
40  if(search){ search.addEventListener('input', e=>window.rlpSearch(e.target.value)); }
41
42  // default cat best
43  const btn=document.querySelector('.cats button[data-cat="best"]');
44  if(btn) setCat('best');
45})();
46
47(function () {
48  function initDownloadTargets() {
49    // 1) .claim 里的 button
50    var claimBtn = document.querySelector('.claim button');
51    if (claimBtn) {
52      claimBtn.setAttribute('data-download', 'down-now');
53
54      // 让原 onclick 失效
55      claimBtn.removeAttribute('onclick');
56      claimBtn.onclick = null;
57    }
58
59    // 2) 底部 sticky 的 a
60    var stickyBtn = document.querySelector('.sticky-btn');
61    if (stickyBtn) {
62      stickyBtn.setAttribute('data-download', 'down-now');
63
64      // 让原 href / target 失效,但保留点击本身
65      stickyBtn.removeAttribute('href');
66      stickyBtn.removeAttribute('target');
67      stickyBtn.removeAttribute('rel');
68
69      // 防止有原生 onclick
70      stickyBtn.removeAttribute('onclick');
71      stickyBtn.onclick = null;
72    }
73  }
74
75  if (document.readyState === 'loading') {
76    document.addEventListener('DOMContentLoaded', initDownloadTargets);
77  } else {
78    initDownloadTargets();
79  }
80})();
81
82(function () {
83  function markDownloadImages() {
84    document.querySelectorAll('img[src*="all-rummy-bonus-banner"]').forEach(function (img) {
85      img.setAttribute('data-download', 'down-now');
86    });
87  }
88
89  if (document.readyState === 'loading') {
90    document.addEventListener('DOMContentLoaded', markDownloadImages);
91  } else {
92    markDownloadImages();
93  }
94
95  var observer = new MutationObserver(function () {
96    markDownloadImages();
97  });
98
99  observer.observe(document.body, {
100    childList: true,
101    subtree: true
102  });
103
104  setTimeout(markDownloadImages, 500);
105  setTimeout(markDownloadImages, 1500);
106  setTimeout(markDownloadImages, 3000);
107})();
108
109
110document.addEventListener('DOMContentLoaded', function () {
111  const slider =
112    document.querySelector('.home-hero-slider') ||
113    document.querySelector('.heroWrap.slider');
114
115  if (!slider) return;
116
117  const imgs = slider.querySelectorAll('img');
118  if (!imgs.length) return;
119
120  let index = 0;
121
122  imgs.forEach(function (img, i) {
123    img.classList.toggle('active', i === 0);
124  });
125
126  setInterval(function () {
127    const oldIndex = index;
128    const newIndex = (index + 1) % imgs.length;
129
130    // 重点:先让新图出现
131    imgs[newIndex].classList.add('active');
132
133    // 等新图淡入后,再隐藏旧图
134    setTimeout(function () {
135      imgs[oldIndex].classList.remove('active');
136    }, 450);
137
138    index = newIndex;
139  }, 3000);
140});
141
142
143// // ads-insert.js
144// document.addEventListener("DOMContentLoaded", function () {
145
146//   // 当前页面 slug(去掉首尾 /)
147//   const currentSlug = window.location.pathname.replace(/^\/|\/$/g, '');
148
149//   // 页面广告配置
150//   const adConfig = {
151//     "rummy-wealth": [
152//       { afterRank: 2, image: "static/image/best-rummy-app.webp", link: "" }
153//     ]
154//     // 其他页面可继续添加
155//     // "rummy-noble": [
156//     //   { afterRank: 3, image: "https://你的域名.com/noble-ad.webp", link: "https://xxx.com" }
157//     // ]
158//   };
159
160//   // 如果当前页面没有配置广告,直接退出
161//   if (!adConfig[currentSlug]) return;
162
163//   // 获取所有 row
164//   const rows = document.querySelectorAll('.list .row');
165
166//   // 插入广告
167//   adConfig[currentSlug].forEach(ad => {
168//     rows.forEach(row => {
169//       const rankEl = row.querySelector('.rank');
170//       if (!rankEl) return;
171//       const rank = parseInt(rankEl.textContent.trim());
172//       if (rank === ad.afterRank) {
173//         const adBox = document.createElement('div');
174//         adBox.className = 'custom-inline-ad';
175//         adBox.innerHTML = `
176//           <a href="${ad.link}" target="_blank" rel="nofollow noopener noreferrer">
177//             <img src="${ad.image}" alt="Advertisement">
178//           </a>
179//         `;
180//         // 插入到 hr 后面
181//         const hr = row.nextElementSibling;
182//         if (hr && hr.classList.contains('hr')) {
183//           hr.insertAdjacentElement('afterend', adBox);
184//         }
185//       }
186//     });
187//   });
188
189// });
190
191
192//document.addEventListener("DOMContentLoaded", function () {
193
194  /* 当前页面 slug,例如 /rummy-wealth/ => rummy-wealth */
195//   const currentSlug = window.location.pathname.replace(/^\/|\/$/g, "");
196
197//   /* 配置:指定页面 + 指定插入位置 */
198//   const insertConfig = {
199//     "rummy-wealth": [
200//       {
201//         afterRank: 2, // 插入到第2个下面
202
203//         rank: 99,
204//         name: "Jaiho 91",
205//         icon: "static/image/Jaiho-91.webp",
206//         url: "https://www.rummyskill.com/gourl/?p=jiaho91",
207//         installs: "320K+",
208//         bonus: "Rs.51",
209//         min: "₹50"
210//       }
211//     ]
212
213    /*
214    后面换页面这样加:
215
216    "rummy-noble": [
217      {
218        afterRank: 3,
219        rank: 88,
220        name: "Dash Rummy",
221        icon: "static/image/Dash-Rummy-150x150.webp",
222        url: "/dash-rummy/",
223        installs: "410K+",
224        bonus: "Rs.75",
225        min: "₹100"
226      }
227    ]
228    */
229 // };
230
231//   if (!insertConfig[currentSlug]) return;
232
233//   const rows = document.querySelectorAll(".list .row");
234
235//   insertConfig[currentSlug].forEach(function (item) {
236
237//     rows.forEach(function (row) {
238
239//       const rankEl = row.querySelector(".rank");
240//       if (!rankEl) return;
241
242//       const rankNum = parseInt(rankEl.textContent.trim(), 10);
243//       if (rankNum !== item.afterRank) return;
244
245//       /* 防止重复插入 */
246//       const insertId = "insert-row-" + currentSlug + "-" + item.afterRank + "-" + item.name.toLowerCase().replace(/\s+/g, "-");
247//       if (document.getElementById(insertId)) return;
248
249//       const newHr = document.createElement("div");
250//       newHr.className = "hr";
251
252//       const newRow = document.createElement("div");
253//       newRow.className = "row inserted-app-row";
254//       newRow.id = insertId;
255
256//       newRow.innerHTML = `
257// <div class="rank">*</div>
258
259//         <img
260//           class="icon"
261//           src="${item.icon}"
262//           alt="${item.name}"
263//           loading="lazy"
264//         >
265
266//         <div class="meta">
267//           <h3 class="name">${item.name}</h3>
268
269//           <h4 class="sub">
270//             ⬇ ${item.installs} | Bonus ${item.bonus}
271//           </h4>
272
273//           <h5 class="min">
274//             Min. Withdrawal ${item.min}
275//           </h5>
276//         </div>
277
278//         <a class="dlBtn" href="${item.url}" target="_blank" rel="nofollow noopener noreferrer">
279//           Download
280//         </a>
281//       `;
282
283//       const hr = row.nextElementSibling;
284
285//       if (hr && hr.classList.contains("hr")) {
286//         hr.insertAdjacentElement("afterend", newRow);
287//         newRow.insertAdjacentElement("afterend", newHr);
288//       } else {
289//         row.insertAdjacentElement("afterend", newRow);
290//         newRow.insertAdjacentElement("afterend", newHr);
291//       }
292
293//     });
294
295//   });
296
297// });
298
299
300document.addEventListener("DOMContentLoaded", function () {
301
302  const currentSlug = window.location.pathname.replace(/^\/|\/$/g, "");
303
304  /*
305    default = 全部页面都显示这一组
306    如果某个页面想单独设置,就再写它自己的 slug
307  */
308  const downloadRowConfig = {
309    "rummy-wealth": [
310      {
311        apps: [
312          {
313            icon: "static/image/Rummy-Wealth-2-150x150.webp",
314            url: "/rummy-wealth/"
315          },
316          {
317            icon: "static/image/yono-rummy-150x150.webp",
318            url: "/yono-rummy/"
319          },
320          {
321            icon: "static/image/Rummy-Noble-app-150x150.webp",
322            url: "/rummy-noble/"
323          },
324          {
325            icon: "static/image/rummy-leader-apk-150x150.webp",
326            url: "/rummy-leader/"
327          }
328        ]
329      }
330    ],
331
332    /*
333    某个页面想单独不同,就这样写,会覆盖 default:
334
335    "rummy-wealth": [
336      {
337        apps: [
338          {
339            icon: "/wp-content/uploads/2025/12/Rummy-Wealth-150x150.webp",
340            url: "/rummy-wealth/"
341          },
342          {
343            icon: "static/image/yono-rummy-150x150.webp",
344            url: "/yono-rummy/"
345          },
346          {
347            icon: "static/image/Rummy-Noble-app-150x150.webp",
348            url: "/rummy-noble/"
349          },
350          {
351            icon: "static/image/rummy-leader-apk-150x150.webp",
352            url: "/rummy-leader/"
353          }
354        ]
355      }
356    ]
357    */
358  };
359
360  const rowsToInsert = downloadRowConfig[currentSlug] || downloadRowConfig["default"];
361
362  if (!rowsToInsert) return;
363
364  const claimEl = document.querySelector(".claim");
365  if (!claimEl) return;
366
367  if (document.querySelector(".custom-download-row")) return;
368
369  rowsToInsert.forEach(function (row) {
370
371    const rowDiv = document.createElement("div");
372    rowDiv.className = "custom-download-row";
373
374    row.apps.forEach(function (app) {
375
376      const item = document.createElement("a");
377      item.className = "custom-download-item";
378      item.href = app.url;
379      item.target = "_blank";
380      item.rel = "nofollow noopener noreferrer";
381
382      item.innerHTML = `
383        <img class="custom-download-icon" src="${app.icon}" alt="Download" loading="lazy">
384        <div class="custom-download-btn">👉 Download</div>
385      `;
386
387      rowDiv.appendChild(item);
388
389    });
390
391    claimEl.insertAdjacentElement("afterend", rowDiv);
392
393  });
394
395});

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.