تواصل معنا
شركة إكسبريس المدينة
شركة شحن ونقل وتركيب وصيانة أثاث وتخزين أثاث – اتصل بنا الآن لتحصل على أفضل خدمة داخل المملكة!
) أو عبر Elementor Custom Code (location: Footer) */(function() { // --- إعدادات قابلة للتعديل --- // لو أرقامك محلية وتحتاجي تحولها لصيغة دولية، عدلي defaultCountryCode // مثال للمملكة السعودية: '+966' var defaultCountryCode = '+966';// إذا كنتي متأكدة أن جميع الأرقام في href مكتوبة بصيغة دولية بالفعل، اجعليها '' // var defaultCountryCode = '';// اسماء الأحداث في GA4 var CALL_EVENT_NAME = 'click_to_call'; var WA_EVENT_NAME = 'whatsapp_click';// --- دوال مساعدة --- function normalizePhone(phone) { if (!phone) return phone; // ازالة مسافات وأحرف غير رقمية إلا علامة + var p = phone.trim().replace(/[^+\d]/g, '');// لو يبدأ بـ 0 و defaultCountryCode معرفة (مثلاً 057... -> +96657...) if (p.indexOf('0') === 0 && defaultCountryCode) { // اقطع الصفر الأولى p = defaultCountryCode + p.slice(1); }// لو يبدأ بـ '+' أو رقم فعلاً نعيده كما هو return p; }function sendGtagEvent(eventName, params, href, callback) { // إذا gtag مش معرَّف، أوقف العملية بهدوء if (typeof gtag !== 'function') { // console.warn('gtag not found - event not sent:', eventName, params); if (typeof callback === 'function') callback(); return; }// استخدم event_callback لضمان تنفيذ الانتقال بعد إرسال الحدث var sent = false; var callbackCalled = false;var cb = function() { if (callbackCalled) return; callbackCalled = true; if (typeof callback === 'function') callback(); };try { gtag('event', eventName, Object.assign({}, params, { event_callback: cb })); sent = true; } catch (e) { // console.error('gtag event error', e); cb(); }// احتياطي: لو لم يتم استدعاء callback خلال 700ms، ننفّذ الانتقال على أي حال setTimeout(function() { if (!callbackCalled) cb(); }, 700); }function openHrefAfterEvent(href, target) { // فتح الرابط بعد إرسال الحدث (لو كان target="_blank" نفتحه فوراً) if (target === '_blank') { // افتح الفوراً في تاب جديد window.open(href, '_blank', 'noopener,noreferrer'); } else { // لو نفس النافذة، نستخدم تغيير الصفحة بعد التأكيد window.location.href = href; } }// --- المعالجة العامة للنقرات على الروابط --- document.addEventListener('click', function(e) { var el = e.target;// اطلع للـ A لو النقر على عنصر داخل الرابط (مثل أيقونة) while (el && el.tagName !== 'A') { el = el.parentElement; } if (!el || !el.href) return;var href = el.href; var target = (el.target && el.target.toLowerCase()) || '';// 1) tel: if (href.indexOf('tel:') === 0) { e.preventDefault(); // نمنع الانتقال الفوري حتى نرسل الحدث var rawPhone = href.replace('tel:', ''); var phone = normalizePhone(rawPhone);sendGtagEvent(CALL_EVENT_NAME, { phone_number: phone, page_path: location.pathname, link_url: href }, href, function() { // افتح/نقل بعد إرسال الحدث openHrefAfterEvent(href, target); });return; }// 2) WhatsApp: wa.me أو api.whatsapp.com // أمثلة: // https://wa.me/966574310072 // https://api.whatsapp.com/send?phone=966574310072 var waMatch = href.match(/(?:https?:\/\/)?(?:wa\.me\/|(?:api\.)?whatsapp\.com\/send\?phone=)(\+?\d+)/i); if (waMatch) { e.preventDefault(); var rawPhone2 = waMatch[1] || ''; var phone2 = normalizePhone(rawPhone2);sendGtagEvent(WA_EVENT_NAME, { phone_number: phone2, page_path: location.pathname, link_url: href }, href, function() { openHrefAfterEvent(href, target); });return; }// 3) بعض الروابط ممكن تكون wa.me مع باراميتر أو مختلفة؛ حاول التقاط wa.me بشكل عام if (href.indexOf('wa.me') !== -1 || href.indexOf('whatsapp.com') !== -1) { e.preventDefault(); // محاولة استخراج كل الأرقام الموجودة var m = href.match(/(\+?\d{6,15})/); var ph = m ? normalizePhone(m[0]) : ''; sendGtagEvent(WA_EVENT_NAME, { phone_number: ph, page_path: location.pathname, link_url: href }, href, function() { openHrefAfterEvent(href, target); }); return; }// غير ذلك: لا نفعل شيئاً (نسمح بالتصرف العادي) }, false);// --- انتهى --- })();