/* Add custom Js styles below */ // ===================== اضافة فيديو للصفحة ===================== const VIDEO_SRC = "https://files.catbox.moe/tprsp8.mp4"; // رابط الفيديو const VIDEO_LINK = "#"; // رابط عند الضغط // ==================================================== (function() { if (!document.body.classList.contains("index")) return; const style = document.createElement("style"); style.textContent = ` .custom-video-banner { font-size: 16px; margin: 30px 0; } .custom-video-banner .container { font-size: 16px; max-width: 1200px; margin: 0 auto; } .custom-video-banner .banner { display: block; overflow: hidden; border-radius: 0px; box-shadow: none; } .custom-video-banner video { width: auto; height: auto; display: block; border-radius: 0px; object-fit: cover; margin: 0 auto; } @media (max-width: 768px) { .custom-video-banner { font-size: 14px; margin: 20px 0; } .custom-video-banner .container { padding: 0 10px; } .custom-video-banner video { width: 100%; height: auto; } } `; document.head.appendChild(style); const section = document.createElement("section"); section.className = "custom-video-banner s-block s-block--fixed-banner wide-placeholder appear"; section.innerHTML = `
`; const sections = document.querySelectorAll("section"); const firstSection = sections[0]; if (firstSection) { firstSection.insertAdjacentElement("beforebegin", section); } else { // fallback -> لو مافيه أقسام، نحطه بداية الصفحة document.body.insertBefore(section, document.body.firstChild); } const video = section.querySelector("video"); if (video) { video.muted = true; video.setAttribute("playsinline", ""); video.setAttribute("webkit-playsinline", ""); video.play().catch(err => { console.log("Autoplay blocked:", err); }); } })(); /* Add custom Js styles below */ /* Add custom Js styles below */ document.addEventListener("DOMContentLoaded", function () { // ✅ 1. ستايل عام + ظهور سلس + حركة الإيموجي const styleTag = document.createElement("style"); styleTag.innerHTML = ` .enhanced-card { opacity: 0; transform: translateY(50px); transition: all 0.6s ease; } .enhanced-card.visible { opacity: 1 !important; transform: translateY(0) !important; } /* حركة الإيموجي */ .badge-emoji { display: inline-block; animation: pulse 1.5s infinite ease-in-out, swing 2.5s infinite ease-in-out; } @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.2); } } @keyframes swing { 0%, 100% { transform: rotate(0deg); } 25% { transform: rotate(8deg); } 75% { transform: rotate(-8deg); } } `; document.head.appendChild(styleTag); // ✅ 2. إظهار الكروت عند التمرير function checkVisibility() { const products = document.querySelectorAll(".s-product-card-entry"); products.forEach((product) => { if (!product) return; const position = product.getBoundingClientRect(); if (position.top < window.innerHeight * 0.9 && position.bottom >= 0) { product.classList.add("visible"); } else { product.classList.remove("visible"); } }); } function observeElements() { const observer = new MutationObserver(() => { checkVisibility(); }); observer.observe(document.body, { childList: true, subtree: true }); window.addEventListener("scroll", checkVisibility); } setTimeout(() => { checkVisibility(); observeElements(); }, 500); // ✅ 3. تحسين كروت المنتجات (نجوم + شارة عشوائية لبعض المنتجات فقط) function enhanceCards() { const cards = document.querySelectorAll('.s-product-card-entry'); if (cards.length === 0) return; cards.forEach((card) => { const content = card.querySelector('.s-product-card-content-main'); if (!content) return; // ⭐ تقييم النجوم if (!card.querySelector('.product-rating')) { const stars = document.createElement('div'); stars.className = 'product-rating'; const rating = Math.floor(Math.random() * 2) + 4; for (let i = 0; i < 5; i++) { const star = document.createElement('span'); star.innerHTML = i < rating ? '★' : '☆'; stars.appendChild(star); } stars.style.color = '#FFD700'; stars.style.fontSize = '18px'; stars.style.margin = '6px 0'; stars.style.display = 'flex'; stars.style.justifyContent = 'center'; stars.style.gap = '2px'; content.appendChild(stars); } // 🏷️ شارات عشوائية لبعض المنتجات فقط }); } let tryCount = 0; const interval = setInterval(() => { enhanceCards(); tryCount++; if (tryCount > 10) clearInterval(interval); }, 1000); window.addEventListener("scroll", checkVisibility); }); // ✅ منع الروابط الفارغة من التنقل document.querySelectorAll('a[href=""], a[href="#"]').forEach(link => { link.addEventListener('click', event => { event.preventDefault(); }); }); /* ✅ ظهور السكاشن عند التمرير */ document.addEventListener("DOMContentLoaded", function () { const sections = document.querySelectorAll("section"); function checkVisibilitySections() { sections.forEach((section) => { const position = section.getBoundingClientRect(); if (position.top < window.innerHeight && position.bottom >= 0) { section.classList.add("visible"); } else { section.classList.remove("visible"); } }); } window.addEventListener("scroll", checkVisibilitySections); checkVisibilitySections(); // Check on load }); /* ✅ باقي الكود زي ما هو (Spinner + Scroll icon + حفظ البوزيشن) */ // Spinner overlay const overlay = document.createElement("div"); overlay.className = "spinner-overlay"; overlay.innerHTML = `
`; document.body.appendChild(overlay); window.addEventListener("load", () => { setTimeout(() => { overlay.remove(); }, 1000); }); // Scroll icon with progress circle const scrollIcon = document.createElement("div"); scrollIcon.id = "scroll-icon"; scrollIcon.style.cssText = ` position: fixed; bottom: 20px; right: 20px; width: 50px; height: 50px; display: none; align-items: center; justify-content: center; cursor: pointer; z-index: 1000;`; const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); svg.setAttribute("class", "progress-circle"); svg.setAttribute("viewBox", "0 0 36 36"); svg.style.cssText = "width: 100%; height: 100%; transform: rotate(-90deg);"; const circleBg = document.createElementNS("http://www.w3.org/2000/svg", "path"); circleBg.setAttribute("class", "circle-bg"); circleBg.setAttribute("d", "M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"); circleBg.setAttribute("fill", "none"); circleBg.setAttribute("stroke", "#0000002a"); circleBg.setAttribute("stroke-width", "3.8"); const circle = document.createElementNS("http://www.w3.org/2000/svg", "path"); circle.setAttribute("class", "circle"); circle.setAttribute("d", "M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"); circle.setAttribute("fill", "none"); circle.setAttribute("stroke", "var(--main-color)"); circle.setAttribute("stroke-width", "3.8"); circle.setAttribute("stroke-linecap", "round"); circle.style.transition = "stroke-dasharray 0.3s ease"; svg.appendChild(circleBg); svg.appendChild(circle); const arrow = document.createElement("div"); arrow.textContent = "↑"; arrow.style.cssText = ` position: absolute; font-size:33px; font-weight: bold; color:var(--main-color); pointer-events: none;`; scrollIcon.appendChild(svg); scrollIcon.appendChild(arrow); document.body.appendChild(scrollIcon); window.addEventListener("scroll", () => { const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; const scrollHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight; const scrollPercentage = (scrollTop / scrollHeight) * 100; circle.style.strokeDasharray = `${scrollPercentage}, 100`; if (scrollTop > 300) { scrollIcon.style.display = "flex"; } else { scrollIcon.style.display = "none"; } }); scrollIcon.addEventListener("click", () => { window.scrollTo({ top: 0, behavior: "smooth" }); }); // Save scroll position window.addEventListener("beforeunload", function () { const currentPage = window.location.pathname; localStorage.setItem(`scrollPosition-${currentPage}`, window.scrollY); }); // Restore scroll position window.addEventListener("load", function () { setTimeout(() => { const currentPage = window.location.pathname; const scrollPosition = localStorage.getItem(`scrollPosition-${currentPage}`); if (scrollPosition) { window.scrollTo(0, scrollPosition); } }, 500); }); // امنع الكليك اليمين document.addEventListener('contextmenu', e => e.preventDefault()); // امنع شوية اختصارات معروفة document.addEventListener('keydown', e => { const k = e.key.toUpperCase(); if (k === 'F12') e.preventDefault(); if (e.ctrlKey && e.shiftKey && ['I','C','J'].includes(k)) e.preventDefault(); if (e.ctrlKey && k === 'U') e.preventDefault(); }); document.addEventListener("DOMContentLoaded", () => { const navButtons = document.querySelectorAll("#main-links-2 .s-slider-block__title-nav button"); navButtons.forEach(btn => { btn.removeAttribute("disabled"); // نشيل disabled btn.setAttribute("aria-disabled", "false"); btn.style.visibility = "visible"; btn.style.opacity = "1"; btn.style.pointerEvents = "auto"; // نخليها تشتغل }); }); document.addEventListener("DOMContentLoaded", function () { // ✅ تحديد السيكشن اللي عايزين نبدله // ✅ حقن الستايل // ✅ تقسيم العنوان إلى كلمات لكل كلمة span const title = document.querySelector(".gaming-title"); if (title) { const words = title.textContent.trim().split(" "); title.innerHTML = words.map((word, i) => `${word}`).join(" "); } // ✅ مراقبة ظهور العناصر const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { // العنوان if (entry.target.classList.contains("gaming-title")) { const spans = entry.target.querySelectorAll("span"); spans.forEach((span) => { span.classList.remove("drop"); void span.offsetWidth; span.classList.add("drop"); }); } // البراجرافات if (entry.target.tagName === "P") { entry.target.classList.add("typing"); } } }); }, { threshold: 0.3 }); if (title) observer.observe(title); // ✅ راقب كل البراجرافات النصية document.querySelectorAll(".grid-item.text-item p").forEach(p => { observer.observe(p); }); }); // واتساب var whatsappFloat = document.createElement('div'); whatsappFloat.className = 'whatsapp-float'; var whatsappLink = document.createElement('a'); whatsappLink.href = 'https://wa.me/+966554209183'; whatsappLink.target = '_blank'; var whatsappIcon = document.createElement('img'); whatsappIcon.src = 'https://upload.wikimedia.org/wikipedia/commons/6/6b/WhatsApp.svg'; whatsappIcon.alt = 'WhatsApp'; whatsappIcon.className = 'whatsapp-icon'; whatsappLink.appendChild(whatsappIcon); whatsappFloat.appendChild(whatsappLink); document.body.appendChild(whatsappFloat); var style = document.createElement('style'); style.innerHTML = ` .whatsapp-float { position: fixed; bottom: 20px; left: 20px; z-index: 100; } .whatsapp-icon { width: 60px; height: 60px; border-radius: 50%; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); cursor: pointer; transition: transform 0.3s ease-in-out; } .whatsapp-icon:hover { transform: scale(1.1); } `; document.head.appendChild(style); document.addEventListener("DOMContentLoaded", function () { const text = "حطب أول ود الأمريكي 🔥 نار قوية وحرارة ثابتة | جودة عالية ودخان أقل، مثالي للكشتات والشوي"; const header = document.querySelector("header") || document.body; const bar = document.createElement("div"); bar.className = "marquee-bar"; const track = document.createElement("div"); track.className = "marquee-track"; // نص مكرر مرتين كبداية track.innerHTML = `
${text}
${text}
`; bar.appendChild(track); header.parentNode.insertBefore(bar, header); // ضمان ملء الشريط بتكرارات كافية function ensureFill() { const viewportWidth = window.innerWidth; let contentWidth = track.scrollWidth; while (contentWidth < viewportWidth * 2) { const clone = track.children[0].cloneNode(true); track.appendChild(clone); contentWidth = track.scrollWidth; } } ensureFill(); window.addEventListener("resize", () => setTimeout(ensureFill, 120)); // إعدادات الحركة let useRAF = true; // استخدم requestAnimationFrame لما الصفحة مرئية let speedPxPerSec = 60; // سرعة الحركة (بيكسل في الثانية) — غيّر لو تحب let rafId = null; let lastTime = null; let translateX = 0; // طولة المحتوى (نحتاجها لإعادة التدوير) function getTotalWidth(){ return track.scrollWidth; } // رندر بدالة RAF function stepRaf(now) { if (!lastTime) lastTime = now; const dt = (now - lastTime) / 1000; lastTime = now; // تحريك لليسار (غير الاتجاه لو عايزة بالعكس) translateX -= speedPxPerSec * dt; const totalW = getTotalWidth(); // إعادة التدوير لتجنب فراغات if (Math.abs(translateX) >= totalW / 2) { translateX += totalW / 2; } track.style.transform = `translateX(${translateX}px)`; rafId = requestAnimationFrame(stepRaf); } // بدء RAF function startRAF() { cancelRAF(); // تأكد من قيم أولية مناسبة translateX = 0; lastTime = null; rafId = requestAnimationFrame(stepRaf); // مسح أي CSS animation لو موجودة track.style.animation = "none"; } function cancelRAF() { if (rafId) { cancelAnimationFrame(rafId); rafId = null; } } // بديل: تشغيل يعتمد على CSS animation (خفيف)، نُسند له طول متغير اعتمادًا على المحتوى وسرعة function startCSSAnimation() { cancelRAF(); const totalW = getTotalWidth(); // نحسب المدة بحيث تكون السرعة تقريبًا speedPxPerSec const durationSec = (totalW / speedPxPerSec); track.style.animation = `marqueeCSS ${durationSec}s linear infinite`; // نستخدم keyframes افتراضية عبر CSS المضافة ديناميكياً } // نضيف قواعد @keyframes ديناميكيًا (مرة واحدة) (function injectCSSKeyframes(){ const id = "marquee-css-keyframes"; if (!document.getElementById(id)) { const style = document.createElement("style"); style.id = id; style.innerHTML = ` @keyframes marqueeCSS { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } `; document.head.appendChild(style); } })(); // إعادة تشغيل الأنيميشن — يختار RAF لو الصفحة مرئية، وإلا CSS ثم يحاول إعادة تشغيل لاحقًا function restartAnimation() { // لو الصفحة ظاهرًة نستخدم RAF لأفضل سلاسة if (!document.hidden && document.hasFocus()) { startRAF(); } else { startCSSAnimation(); } } // على رجوع التبويب أو التركيز نعيد التشغيل فورًا document.addEventListener("visibilitychange", () => { if (!document.hidden) { restartAnimation(); } else { // لو أخفينا الصفحة ننتقل لـ CSS كخيار أخف (وإعادة تشغيل عند الرجوع) startCSSAnimation(); } }); window.addEventListener("focus", restartAnimation); window.addEventListener("blur", () => { // لو الصفحة فقدت التركيز نخلي CSS (أخف) startCSSAnimation(); }); // لو حصل تفاعل بالماوس/لمس نضمن التشغيل bar.addEventListener("mouseenter", restartAnimation); bar.addEventListener("touchstart", restartAnimation); // watchdog: يتفقد كل فترة لو الحركة توقفت ويعيد التشغيل setInterval(() => { // لو العنصر غير مرئي للـ DOM أو مفقود نتوقف if (!document.body.contains(track)) return; const computed = window.getComputedStyle(track); const transform = computed.transform || ""; const anim = computed.animationName || computed.getPropertyValue('animation-name'); // قواعد بسيطة للكشف عن التوقف: لو لا يوجد transform ولا يوجد animation لكن يجب أن يكون موجود if (!document.hidden && (!rafId)) { // نحاول تشغيل RAF إن كانت الصفحة مرئية restartAnimation(); } else if (document.hidden && (!anim || anim === 'none')) { // لو الصفحة مخفيه نعيد CSS startCSSAnimation(); } }, 1500); // ابدأ للمرة الأولى restartAnimation(); }); //itrioo // تحديد الفوتر const footer = document.querySelector('.store-footer'); // إنشاء رابط const link = document.createElement('a'); link.href = 'https://itrioo.com'; link.target = '_blank'; link.style.display = 'block'; link.style.width = '180px'; // العرض link.style.height = '50px'; // الارتفاع link.style.margin = '20px auto'; // لتوسيط الرابط داخل الفوتر link.style.borderRadius = '15px'; // زوايا منحنية link.style.boxShadow = '0 0 10px rgba(0,0,0,0.1)'; link.style.cursor = 'pointer'; link.style.display = 'flex'; link.style.alignItems = 'center'; link.style.justifyContent = 'center'; link.style.fontSize = '16px'; link.style.fontWeight = '600'; link.style.color = '#2e4f20'; link.style.textDecoration = 'none'; // النص داخل الرابط link.textContent = 'برمجـة وتطويـر iTrioo'; // إضافة الرابط إلى الفوتر footer.appendChild(link); //تعديل document.addEventListener("DOMContentLoaded", function() { const footer = document.querySelector(".store-footer"); if (!footer) return; const faqSection = document.createElement("div"); faqSection.id = "faq-section"; faqSection.innerHTML = `

الأسئلة الشائعة

+ ما أنواع الحطب المتوفرة لديكم؟
نوفر مجموعة مختارة من أفضل أنواع الحطب الأمريكي:
- التوت
- البلوط
- الجوز
- الأشجار المتنوعة
كل نوع يتميز بحرارة ثابتة ورائحة نقية وتجربة مثالية للشوي والتدفئة.
+ هل الحطب طبيعي؟ وما نسبة الرطوبة؟
نعم، جميع منتجات All Wood طبيعية 100% ومجففة بعناية بنسبة 5–8% فقط لضمان:
• اشتعال سريع
• احتراق أطول
• دخان أقل
• حرارة مستقرة
+ هل الحطب مناسب للشوي؟ وما الفرق بين الأنواع؟
حطب الجوز: حرارة قوية، نكهة دخان فاخرة، مثالي لشوي اللحوم والدجاج والأسماك والتدفئة.
حطب البلوط: احتراق طويل جداً وحرارة عالية، مناسب للتدفئة والشوي بدون نكهة دخان قوية.
حطب التوت: دخان خفيف ونكهة فاكهية متوسطة، ممتاز لشوي الدجاج والأسماك.
أشجار متنوعة: خيار متنوع للاستخدام العام، مناسب للتدفئة والكشتات والشوي الخفيف.
+ كيف يمكنني طلب الحطب؟
يمكنك الطلب مباشرة عبر متجرنا الإلكتروني خلال ثوانٍ،
+ ما طرق الدفع المتاحة؟
نوفر جميع الطرق:
• الدفع الإلكتروني
• Apple Pay
• بطاقات مدى
+ ما مدة توصيل الطلبات؟
عادة يصل الطلب خلال 2–3 أيام عمل حسب المدينة.
داخل الرياض يتم التوصيل غالبًا في نفس اليوم أو اليوم التالي.
+ هل توفرون توصيل خارج الرياض؟
نعم، نوفر توصيل لجميع مدن المملكة عبر شركات شحن معتمدة وبسرعة ممتازة.
+ هل يوجد تتبع للشحنات؟
نعم، بمجرد شحن طلبك تستلم رقم تتبع لتحديثات حالة الشحنة مباشرة.
+ هل تقدمون خدمات للشركات؟
نعم، نقدم باقات خاصة للمؤسسات والمطاعم والفود ترك، مع:
• أسعار خاصة للكميات الكبيرة
• عقود توريد شهرية
• توصيل مستمر حسب احتياج العميل
+ هل يوجد ضمان على المنتجات؟
نعم، ضمان استبدال في حال وجود أي ملاحظة على جودة الحطب أو الوزن وتغليف المنتج .
+ هل خدمة العملاء متاحة دائمًا؟
فريق All Wood متواجد لخدمتك 24/7 عبر الواتساب .
`; footer.parentNode.insertBefore(faqSection, footer); const questions = faqSection.querySelectorAll(".faq-question"); questions.forEach(q => { q.addEventListener("click", () => { const answer = q.parentNode.querySelector(".faq-answer"); const icon = q.querySelector(".faq-icon"); if (answer.style.display === "block") { answer.style.display = "none"; icon.textContent = "+"; } else { answer.style.display = "block"; icon.textContent = "-"; } }); }); // CSS – إجبار استخدام خطوط آبل وتحسين عرض الخطوط const style = document.createElement("style"); style.innerHTML = ` /* Force Apple system font when available and improve smoothing */ #faq-section, #faq-section * { font-family: "Apple", "SF Pro Text", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important; -webkit-font-smoothing: antialiased !important; -moz-osx-font-smoothing: grayscale !important; font-synthesis: none !important; } #faq-section { text-align: center; margin: 50px 0; color: white !important; } .faq-title { font-size: 22px; margin-bottom: 30px; font-weight: bold; } .faq-item { background-color: #2e4f20; margin: 10px auto; padding: 15px 20px; width: 85%; border-radius: 12px; cursor: pointer; transition: background-color 0.3s; color: white !important; } .faq-item:hover { background-color: #436335; } .faq-question { display: flex; align-items: center; justify-content: center; gap: 12px; width: 100%; font-weight: bold; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; direction: rtl; color: white !important; } .faq-icon { font-size: 26px; font-weight: bold; width: 30px; text-align: center; color: white !important; flex-shrink: 0; } .faq-text { flex-grow: 1; text-align: center; color: white !important; } .faq-answer { display: none; margin-top: 12px; color: white !important; font-size: 16px; line-height: 1.6; text-align: right; } `; document.head.appendChild(style); }); // تعديييييييييييييييييييييييل (function(){ console.log("[Debug] تشغيل سكربت زر شرح الاستخدام — البداية"); // محاولات لإيجاد عنصر الوصف بأكثر من selector محتمل const selectors = [ '.product-description', '.product-description-wrapper', '.description', '.product-content', '.product__description', '#description', '.tab-content', '.product-details', '.product-info' ]; // دالة للبحث عن العنصر function findDescElement() { for (let s of selectors) { let el = document.querySelector(s); if (el) { console.log(`[Debug] وجد عنصر الوصف بواسطة selector: ${s}`); return el; } } // حاول إيجاد أي عنصر يحتوي نص "طريقة الإستخدام" أو "شرح" كتلميح const all = Array.from(document.querySelectorAll('div,section,article')); for (let el of all) { const text = (el.innerText || '').slice(0,200).toLowerCase(); if (text.includes('طريقة الاستخدام') || text.includes('شرح:') || text.includes('شرح الاستخدام')) { console.log("[Debug] وجد عنصر محتمل يحتوي نص شرح"); return el; } } return null; } // تعيين regex للروابط جوجل درايف const driveRegex = /(https?:\/\/(?:drive\.google\.com|docs\.google\.com)[^\s'"]+)/i; // إنشاء الزر function makeButton(link) { const a = document.createElement('a'); a.href = link; a.target = '_blank'; a.rel = 'noopener'; a.innerText = '🎥 مشاهدة طريقة الاستخدام'; a.style.display = 'block'; a.style.padding = '12px 16px'; a.style.background = '#28a745'; a.style.color = '#fff'; a.style.textAlign = 'center'; a.style.borderRadius = '8px'; a.style.marginTop = '16px'; a.style.fontWeight = '700'; a.style.textDecoration = 'none'; return a; } // دالة رئيسية function process() { const desc = findDescElement(); if (!desc) { console.log("[Debug] لم أجد عنصر الوصف بعد — سأبقى أحاول لمدة قصيرة"); return false; } // حاول إيجاد رابط داخل anchor tags أولاً const anchors = Array.from(desc.querySelectorAll('a[href]')); for (let an of anchors) { if (driveRegex.test(an.href)) { const link = an.href.match(driveRegex)[0]; console.log("[Debug] وجد رابط درايف داخل : ", link); // إزالة العنصر الرابط أو إخفاؤه an.remove(); // إضافة الزر desc.appendChild(makeButton(link)); return true; } } // لو مافيه anchors، ابحث داخل النص (قد يكون الرابط نص عادي) const html = desc.innerHTML; const textMatch = html.match(driveRegex); if (textMatch) { const link = textMatch[0]; console.log("[Debug] وجد رابط درايف داخل النص: ", link); // حذف كل تكرارات الرابط من الـ HTML desc.innerHTML = html.split(link).join(''); desc.appendChild(makeButton(link)); return true; } console.log("[Debug] العنصر موجود لكن لم أجد رابط درايف داخله"); return false; } // نجرب عدة مرات لأن بعض القوالب تحمل المحتوى بشكل ديناميكي let attempts = 0; const maxAttempts = 12; // ~ 12 * 500ms = 6 ثواني const interval = setInterval(() => { attempts++; const done = process(); if (done) { console.log("[Debug] تم إضافة زر شرح الاستخدام بنجاح ✓"); clearInterval(interval); } else if (attempts >= maxAttempts) { console.log("[Debug] انتهت محاولات البحث ("+attempts+") ولم يتم العثور على الرابط تلقائياً."); // نضع مراقب تغيّر DOM كحل أخير clearInterval(interval); observeDomForDesc(); } }, 500); // مراقب DOM يحاول مرة أخرى لو ظهر الوصف لاحقاً (مثلاً قالب SPA) function observeDomForDesc(){ console.log("[Debug] تفعيل مراقب DOM للبحث لاحقاً"); const observer = new MutationObserver((mutations, obs) => { const did = process(); if (did) { console.log("[Debug] المراقب وجد الرابط وأضاف الزر ✓"); obs.disconnect(); } }); observer.observe(document.body, { childList: true, subtree: true }); // افصل المراقب بعد 20 ثانية للسلامة setTimeout(()=>{ observer.disconnect(); console.log("[Debug] فصلت مراقب DOM بعد 20 ث"); }, 20000); } })();