Özel Kod
Özel CSS ve JavaScript, temizlenen parçalar
Hazır tipler işinizi görmediğinde kampanyaya kendi CSS ve JavaScript'inizi ekleyebilirsiniz. İki ayrı yer vardır ve karıştırılması en sık yapılan hatadır: tüm kampanya tiplerindeki Code bölmesi ve yalnızca Custom Widget tipinin kendi alanları. Bu sayfa her ikisinin kurallarını, neyin temizlendiğini ve nerede çalışmadığını anlatır.
Panelde nerede
Kampanya kurucusu → Design (Tasarım) adımı:
| Yer | Alanlar | Hangi tiplerde |
|---|---|---|
| Code (Kod) bölmesi | Custom CSS (Özel CSS), Custom JavaScript (Özel JavaScript) | Sayfaya çizilen her tip. Tab Talk'ta bölme yoktur: çizilecek bir eleman bulunmaz |
| Content (İçerik) bölmesi | Custom HTML, Custom CSS ve altında Custom JavaScript ile JavaScript Execution Timing | Yalnızca Custom Widget |
Custom Widget'ta içerik bölmesinin üstündeki şeritten Templates (Şablonlar) ile kütüphanenizdeki bir şablonu HTML, CSS ve JavaScript alanlarına birden uygulayabilir, Save to library (Kütüphaneye kaydet) ile buradaki kodu şablon olarak saklayabilirsiniz — bkz. Kütüphane.
Custom HTML nasıl temizlenir
Custom Widget'ın HTML'i sayfaya konmadan önce temizlenir. İzin verilenler: yapı etiketleri (div, section, header...), başlıklar ve metin etiketleri, listeler, bağlantı ve görsel (a, img, picture, video, audio), tablolar, form elemanları (form, input, button, select, textarea...), temel SVG etiketleri ve style niteliği. İzin verilmeyenler atılır:
script,iframe,object,embed,base,meta,linketiketleri;styleetiketi — stilinizi Custom CSS alanına yazın;onclick,onerrorgibi olay nitelikleri — davranışı JavaScript alanından bağlayın;javascript:gibi tehlikeli bağlantı şemaları (yalnızcahttp,https,mailto,tel,smsve benzerleri kalır).
Temizlik sessizdir: atılan parça için hata gelmez, yalnızca çıktıda yoktur. Önizlemede göremiyorsanız önce HTML'inizin bu listeye uyup uymadığına bakın.
Custom CSS nasıl çalışır
CSS bir style etiketi olarak sayfaya eklenir ve sayfanın tamamına uygulanır, yalnızca kampanyaya değil. Eklenmeden önce şunlar silinir: expression(...), behavior, -moz-binding, javascript:, data: adresleri ve her @import. Bu yüzden:
- Sınıf adlarına kendi önekinizi verin (
.promo-*),body,a,h3gibi çıplak seçici yazmayın. - Yalnızca bu kampanyayı hedeflemek için kampanyanın kök elemanındaki niteliklerden yararlanın:
[data-campaign-id="KAMPANYA_KIMLIGI"]ya da[data-widget-type="announcement_bar"]. Kimlik, kampanyayı açtığınızda adres çubuğundaki/dashboard/campaigns/yolunun sonundadır. - Hazır tiplerin kök sınıfları
.selwise-widgetile tipe özel bir sınıftır (.selwise-bar,.selwise-footer,.selwise-card,.selwise-inline,.selwise-floating,.selwise-slide,.selwise-newsletter,.selwise-custom). - Marka değişkenlerini okuyun:
var(--selwise-brand, #111)— bkz. Marka Teması.
Custom JavaScript nasıl çalışır
JavaScript'iniz kaydedilirken derlenir ama çalıştırılmaz: söz dizimi hatası varsa kayıt reddedilir ve hata kutunun altında yazar; sınır 100.000 karakterdir. Çalışma zamanında iki yol vardır:
| Yer | Nasıl çalışır |
|---|---|
| Code bölmesi | Kampanya ekranda göründüğü an (kurulmuş ama henüz görünmeyen bir modal tetikleyicisi beklenir) bir fonksiyon gövdesi olarak çalışır. İki değişken hazırdır: entityElement (kampanyanın kök elemanı) ve entityConfig (kampanya kaydı). Hatalar yakalanır ve yalnızca test modunda konsola yazılır |
| Custom Widget JavaScript'i | (function() { ... }).call(window) içinde, kampanyanın kendi kabına eklenen bir script olarak çalışır; context sabiti widget ve campaign kayıtlarını taşır |
JavaScript Execution Timing yalnızca Custom Widget'ta vardır: Immediate (HTML ile birlikte), After DOM Ready (DOM hazır olduktan sonra) ya da On Custom Event (özel olayda). Özel olayı seçerseniz Custom Event Name zorunludur; olay adı olmadan betik hiç çalışmaz. Olayı sayfanızdan document üzerinde tetiklersiniz ve betik bir kez çalışır:
document.dispatchEvent(new CustomEvent('selwise:campaign-rendered'));
Sitenizin güvenlik politikası betiği engelleyebilir
Code bölmesi betiği new Function ile, Custom Widget betiği satır içi script ile çalıştırır. Sitenizin Content-Security-Policy başlığı unsafe-eval ya da satır içi betiğe izin vermiyorsa betik sessizce çalışmaz; kampanyanın kendisi görünür. Konsolda CSP uyarısı arayın.
Çalışmadığı yerler
- Uygulama kanalı. SDK kararı verir, uygulama yüzeyi kendi bileşeniyle çizer; CSS ve JavaScript teslim edilir ama uygulanmaz. Tek istisna Custom Widget: WebView içinde çizilir ve kodu orada çalışır. Kurucu uygulama kanalındayken bunu bir notla söyler.
- Sekme Mesajı ve Çerez Onayı: biri çizilecek bir eleman taşımaz, öteki kampanya hattından geçmez.
Yayınlamadan önce
JavaScript'i test modunda deneyin (Test Modu); söz dizimi geçerli bir betik yine de sonsuz döngüyle sayfayı dondurabilir ya da sitenizin bir global değişkenini bozabilir. Selwise bunu denetleyemez. Betiği yapay zekâya yazdırdıysanız mutlaka okuyun — bkz. İçerik Düzenleme.
Son güncelleme: 10 Ekim 2026