Örnekler

Çalışan script örnekleri

Sık kullanılan script örnekleri. Hepsi kendi sitenize uyarlanmalıdır — seçiciler sizin temanıza göre değişir. Her örnek, çalışma modeline uygun olarak bir (function () { … })(); içindedir (üst düzey return kullanılamaz) ve DOM'u beklemek için MutationObserver kullanır.

Ürün sayfasına bilgi kutusu

Hedefleme: prefix tipiyle ürün sayfası yolu (örneğin /urun/).

(function () {
  if (window.__kargoKutusu) return;
  window.__kargoKutusu = true;

  function ekle() {
    var hedef = document.querySelector('.product-price');
    if (!hedef || document.querySelector('.sw-kargo-kutusu')) return !!hedef;
    var kutu = document.createElement('div');
    kutu.className = 'sw-kargo-kutusu';
    kutu.textContent = '500 TL üzeri kargo bedava';
    hedef.insertAdjacentElement('afterend', kutu);
    return true;
  }

  try {
    if (ekle()) return;
    // Tema geç çizilebilir: eleman gelene kadar izle, sonra bırak.
    var gozlemci = new MutationObserver(function () {
      if (ekle()) gozlemci.disconnect();
    });
    gozlemci.observe(document.body, { childList: true, subtree: true });
    setTimeout(function () { gozlemci.disconnect(); }, 10000);
  } catch (e) {
    console.warn('[kargo kutusu]', e);
  }
})();

CSS alanına:

.sw-kargo-kutusu {
  background: var(--selwise-surface-alt, #f6f6f6);
  border-radius: var(--selwise-radius-sm, 4px);
  color: var(--selwise-text, #111);
  font-size: 13px;
  margin-top: 8px;
  padding: 8px 12px;
}

Bunun için önce zenginleştirmeye bakın

Ürün sayfasına içerik eklemenin doğru yolu genellikle Ürün Zenginleştirme modülüdür: kural bazlı atama, ürün verisi erişimi ve yükseklik rezervasyonu ile gelir. Script'i yalnızca zenginleştirmenin çözemediği durumlarda kullanın.

Selwise'e özel olay gönderme

Sitenizde Selwise'in otomatik yakalamadığı bir etkileşim varsa:

(function () {
  document.addEventListener('click', function (e) {
    var btn = e.target.closest('.beden-tablosu-ac');
    if (!btn || !window.Selwise) return;
    window.Selwise.track('size_guide_open', {
      entityType: 'product',
      entityId: btn.dataset.sku,
      metadata: { source: 'script' },
    });
  });
})();

track, ikinci parametre olarak entityType, entityId ve metadata alanlarını okur; başka anahtarlar yok sayılır. Olay adları: Olay Referansı, window.Selwise metodları: JavaScript API.

Kendi çerez banner'ınızın kararını iletmek

Kendi banner'ınızı kullanıyorsanız karar anında Selwise'e iletin:

(function () {
  document.addEventListener('benim-consent-karari', function (e) {
    if (!window.Selwise) return;
    if (e.detail.analytics || e.detail.marketing) {
      window.Selwise.grantConsent({
        analytics: !!e.detail.analytics,
        marketing: !!e.detail.marketing,
      });
    } else {
      window.Selwise.revokeConsent();
    }
  });
})();

setConsent diye bir metot yoktur; onay metotları grantConsent, revokeConsent, showConsentPreferences ve withdrawConsent'tir. Ayrıntı: Onay Yönetimi.

Çerez yazmadan önce izni kontrol etmek

Selwise scripti onay beklemeden çalıştırır; izne bağlı bir şey saklıyorsanız kontrol sizin işinizdir:

(function () {
  var onay = window.Selwise && window.Selwise.getConsentState();
  // null: ziyaretçi henüz cevap vermedi
  if (!onay || !onay.marketing) return;
  localStorage.setItem('benim-pazarlama-isaretim', '1');
})();

Modal'ı kendi butonunuzdan açmak

Modal kampanyasının tetikleyicisini Custom Event yaptıysanız (varsayılan olay adı selwise:open-modal), olayı document üzerinden gönderin — modal olayı document'ta dinler:

(function () {
  document.addEventListener('click', function (e) {
    if (!e.target.closest('.kampanya-ac')) return;
    document.dispatchEvent(new CustomEvent('selwise:open-modal'));
  });
})();

Panelde olay adını değiştirdiyseniz burada da o adı kullanın. Ayrıntı: Modal.

Tek sayfa uygulamasında rota değişimini izlemek

Selwise scripti yol değişince yeniden çalıştırmaz. Rotayı kendiniz izleyin ve işi her seferinde idempotent uygulayın:

(function () {
  if (window.__rotaIzleyici) return;
  window.__rotaIzleyici = true;

  function uygula() {
    if (!location.pathname.startsWith('/urun/')) return;
    // idempotent iş: eklemeden önce var mı diye bak
  }

  ['pushState', 'replaceState'].forEach(function (ad) {
    var asil = history[ad];
    history[ad] = function () {
      var sonuc = asil.apply(this, arguments);
      setTimeout(uygula, 0);
      return sonuc;
    };
  });
  window.addEventListener('popstate', uygula);
  uygula();
})();

Yol kuralını prefix tipiyle / yapın: kural yalnızca ilk yüklenen yola bakar, kodun içindeki startsWith ise her geçişte güncel yolu denetler. Böylece ziyaretçi sitenize ana sayfadan girip ürün sayfasına tıkladığında da çalışır.

Yapmayın

YapmayınNeden
Dış script yüklemekSayfa hızını ve güvenliği etkiler; sitenizin kendi altyapısına ekleyin. Yapay zekâ yazımında da bu bir uyarı sebebidir
Çerez ya da form alanı okumak, üçüncü tarafa veri göndermekKod ödeme sayfasındaki her şeyi görebilir; onay ve KVKK sorumluluğu sizdedir
document.write, alert, confirm, promptSayfayı bozar ya da bloklar
Sonsuz döngü, ağır senkron işlemSayfayı kilitler
Üst düzey returnSöz dizimi hatasıdır; script hiç çalışmaz
Sayfa içeriğini büyük ölçüde değiştirmekBakımı zorlaşır, tema güncellemesinde kırılır

Son güncelleme: 9 Ekim 2026