رضایت مشتری
در حال آماده‌سازی…
${html}
`); doc.close(); } async function fetchPanelHTML(){ const res = await fetch(SOURCE_URL, { credentials: "same-origin", cache: "no-store" }); if (!res.ok) throw new Error("response not ok"); const html = await res.text(); const doc = new DOMParser().parseFromString(html, "text/html"); let panel = doc.getElementById(PANEL_ID) || [...doc.querySelectorAll(".woocommerce-Tabs-panel,.wc-tab,.panel,.elementor-tab-content")] .find(el => (el.id||"") === PANEL_ID); if (!panel) throw new Error("panel not found"); // لینک/منبع نسبی → مطلق const base = new URL(SOURCE_URL).origin; let content = panel.innerHTML .replace(/(src|href)\s*=\s*"(\/[^"]*)"/g,(m,a,p)=>`${a}="${base}${p}"`) .replace(/(src|href)\s*=\s*'(\/[^']*)'/g,(m,a,p)=>`${a}='${base}${p}'`); return content; } (function init(){ const mount = document.getElementById("embed-customer-videos"); const btn = document.getElementById("ecv-refresh"); const cached = localStorage.getItem(CACHE_KEY); const cachedAt = localStorage.getItem(DATE_KEY); // دکمهٔ به‌روزرسانی دستی را فقط برای ادمین/خودت نگه دار: btn.style.display = "inline-block"; btn.addEventListener("click", async ()=>{ btn.disabled = true; btn.textContent = "در حال به‌روزرسانی…"; try{ const html = await fetchPanelHTML(); localStorage.setItem(CACHE_KEY, html); localStorage.setItem(DATE_KEY, new Date().toISOString()); location.reload(); }catch(e){ alert("به‌روزرسانی ناموفق بود."); btn.disabled=false; btn.textContent="به‌روزرسانی دستی ویدیوها"; } }); // اگر کش داریم و force نیست، از کش استفاده کن (هیچ فچ جدیدی انجام نمی‌شود) if (cached && !URL_FORCE_REFRESH){ const frame = createIframe(mount); writeIntoIframe(frame, cached); window.addEventListener("message", (e)=>{ if (!e.data || !e.data.__ecv__) return; frame.style.height = Math.max(200, Number(e.data.h)||0) + "px"; }); // نمایش زمان اسنپ‌شات (اختیاری) const p = document.createElement("div"); p.style.cssText = "margin-top:6px;font-size:12px;opacity:.7;text-align:left"; p.textContent = cachedAt ? "اسنپ‌شات ویدیوها: " + new Date(cachedAt).toLocaleString("fa-IR") : ""; mount.appendChild(p); return; } // در غیر این صورت یک‌بار می‌گیریم و می‌ریزیم تو کش، از دفعهٔ بعد ثابت می‌ماند fetchPanelHTML().then(html=>{ localStorage.setItem(CACHE_KEY, html); localStorage.setItem(DATE_KEY, new Date().toISOString()); const frame = createIframe(mount); writeIntoIframe(frame, html); window.addEventListener("message", (e)=>{ if (!e.data || !e.data.__ecv__) return; frame.style.height = Math.max(200, Number(e.data.h)||0) + "px"; }); }).catch(err=>{ console.error(err); mount.innerHTML = '
خطا در بارگذاری محتوای تب.
'; }); })();

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *