İçeriğe geç

Sorun giderme

Belirti Olası neden Çözüm
Kapsayıcı olduğu gibi kalıyor widget.js yüklenmedi Ağ sekmesinde https://api.mirac-ozdemir.com/widget.js isteğine bakın. İçerik engelleyici, CSP veya yanlış adres olabilir.
Konsolda Refused to load the script / Refused to frame CSP script-src ve frame-src kurallarını ekleyin: Güvenlik ve CSP.
Konsolda [MiracOzdemirWidget] Invalid data-… Geçersiz öznitelik değeri Uyarılar İngilizcedir; mesaj hangi özniteliğin ve hangi değerlerin beklendiğini söyler. Anahtar ^[a-z0-9]+(-[a-z0-9]+)*$ olmalı (2–64 karakter), data-locale tr/en, data-theme auto/light/dark/inherit, data-accent 6 onaltılık hane. Kapsayıcı atlanır.
Konsolda Invalid data-inputs value data-inputs JSON nesnesi değil Çift tırnaklı geçerli bir JSON nesnesi verin: data-inputs='{"amount":"1000"}'.
Konsolda Integrity / SRI hatası, betik çalışmıyor Sabitlediğiniz özet dosyayla eşleşmiyor Manifestten güncel integrity değerini alın ve crossorigin="anonymous" eklediğinizden emin olun: Sürüm politikası.
Boş veya “bulunamadı” sayfası Araç yok, yayında değil veya istenen dilde yok key’i katalogdan doğrulayın; data-locale’i kontrol edin.
Sadece “bakım” bildirimi Araç geçici olarak bakımda Bekleyin; Durum sayfasına bakın.
Sayfa HTTP’de Karma içerik engeli Siteniz HTTPS ile sunulmalı.

Betiği defer/async ile yüklüyorsanız ve kapsayıcıyı sayfa yüklendikten sonra eklediyseniz scan() veya mount() çağırın.

  • Çubuk (scroll) oluşuyor veya boşluk kalıyor. Yükseklik içerik değiştikçe otomatik ayarlanır. Kapsayıcınıza sabit height veya overflow: hidden verdiyseniz kaldırın; iframe’in kendisine CSS ile yükseklik zorlamayın.
  • İlk görünümde zıplama. Yükleyici bir iskelet yer tutucu çizer ve aynı {araç, dil, görünüm} için son ölçülen yüksekliği sitenizin localStorage’ında (mo-widget-h:…) hatırlar; ilk ziyarette yükseklik bilinmediği için 480 px ayrılır. data-height ile aracın tipik yüksekliğini verin. Tarayıcı depolamayı engelliyorsa (gizli pencere, çerez engelleyici) yükseklik her ziyarette yeniden öğrenilir.
  • Düz iframe kullanıyorsunuz. Yüksekliği siz yönetmelisiniz: Düz iframe.
  • Gizli sekmede yüklendi. display:none içindeki bir kapsayıcıda ölçüm yapılamaz; sekme açıldığında unmount + mount ile yeniden kurun.
  • Widget geç beliriyor. iframe ready olana kadar görünmez tutulur (en çok 15 saniye). Sayfanın üstündeki widget’larda data-lazy="false" ile hemen yüklenmesini isteyin.
  • Dinleyiciyi kapsayıcıya veya document’e eklediğinizden emin olun; olaylar kabarcıklanır ancak iframe’in kendisine değil, kapsayıcıya gönderilir. <mo-calculator> kullanıyorsanız event.target öğenin içindeki kapsayıcıdır; dinleyiciyi öğeye de ekleyebilirsiniz.
  • Olay adları mo:ready, mo:resize, mo:input, mo:result, mo:error, mo:select’tir (iki nokta üst üste ile). mo:select yalnızca arama/kategori widget’larından gelir, mo:input yalnızca hesaplayıcıdan.
  • Önizlemeyi yapılandırıcıda deneyin: olay günlüğü aynı olayları gösterir; orada geliyorsa sorun sayfanızdadır.
  • mo:result yalnızca başarılı bir hesaplamadan sonra tetiklenir. mo:input kullanıcı bir alanı düzenledikten ~250 ms sonra gelir.
  • Olayın detail’inde beklediğiniz yeni alanlar (inputs, requestId, tool) yoksa embed sayfası eski olabilir; event.detail.features neyin desteklendiğini söyler.
  • Alan adlarını araç tanımından alın ve özniteliklerde kebab-case yazın: data-input-vat-rate-option → vatRateOption. JSON’da (data-inputs) alan adı camelCase’tir.
  • Bilinmeyen alanlar ve geçersiz değerler sessizce yok sayılır. Ondalıklar string ("1234.56"), mantıksal değerler true/false, tarihler YYYY-MM-DD olmalı; seçenek alanlarında seçenek anahtarını verin. Değer ≤ 64 karakter, en çok 50 alan.
  • data-autorun="true" yalnızca girdiler geçerliyse hesaplar; eksik zorunlu alan varsa widget hata gösterir.
  • data-view="result" ön değer gerektirir; ön değer yoksa sonuç paneli boş kalır.
  • update, setInputs, calculate, reset yalnızca mount edilmiş bir kapsayıcıda çalışır; aksi halde false döner (calculate ise NOT_MOUNTED ile reddeder). <mo-calculator> için API’ye öğenin içindeki kapsayıcıyı verin (el.querySelector('[data-mo-mounted]')): Özel öğeler ve SDK.
  • calculate() bir Error değil, { code, message, fields? } nesnesiyle reddeder. NOT_READY: iframe zamanında hazır olmadı; UNSUPPORTED: arama/kategori widget’ı ya da komutu bilmeyen eski bir embed sayfası.
  • Konsolda window.MiracOzdemirWidget.update is not a function görüyorsanız sayfada eski (1.0) yükleyici önbellekte olabilir; widget.build ve widget.features değerlerini kontrol edin. /widget.js en çok bir saat önbelleklenir.
  • Sayfanın temasını izleyen theme="inherit" yalnızca yükleyicide vardır; düz iframe’de yoktur.

Widget içinde kırmızı hata görüyorsanız mo:error olayının code değerine bakın (Hata kodları). RATE_LIMITED aynı IP’den çok sayıda hesaplama yapıldığını gösterir; kısa süre bekleyin.

  • data-theme="auto" (varsayılan) ziyaretçinin sistem temasını izler; sayfanızın temasını değil. Sayfanızın temasına uymak için data-theme="inherit" verin; tema değişince widget yeniden yüklenmeden güncellenir. Yükleyici sayfanızın temasını data-theme/data-bs-theme/data-color-mode özniteliklerinden, dark benzeri sınıflardan veya color-scheme’den anlar; sitenizin tema mekanizması bunların hiçbirini kullanmıyorsa update(el, { theme: 'dark' }) ile kendiniz bildirin.
  • Dil data-locale ile belirlenir; tarayıcı dilini otomatik izlemez. Dili değiştirmek iframe’i yeniden yükler (update(el, { locale })).

Bize şunları gönderin: sayfa adresi, data-* öznitelikleriniz, tarayıcı ve konsol çıktısı. Bkz. Destek.