içeriğe atla

Tema değiştirmede flaş sorunu

filiz

Koyu tema varsayılan, tercih localStorage’da. Kullanıcı açık temayı seçmişse, sayfa yüklenirken önce koyu boyanıyor, sonra script çalışıp açığa geçiyor. Göz bunu bir flaş olarak görüyor.

Sebep sıralama: <body> boyandıktan sonra çalışan bir script her zaman geç kalıyor. Modül scriptleri varsayılan olarak defer’lı, yani en geç olanı.

Çözüm, tercihi okuyup <html> üzerine data-theme yazan küçük bir senkron inline script’i <head> içine koymak. Bundle’a girmiyor, harici istek yok, parser onu görür görmez çalıştırıyor.

Denemediğim şey: bunun bir CSP script-src politikasıyla nasıl geçineceği. Inline script’e izin vermek için ya unsafe-inline ya da bir nonce gerekiyor. Statik sitede nonce üretmek kolay değil, çünkü sunucu tarafı yok.