Türkçe karakterlerde css text-transform’un çalışmama problemi

Eğer css:text-transform ile yazıları uppercase yada capitalize göstermek istemişsinizdir muhtemelen türkçe karakterlerde problem yaşamışsınızdır.

Bu sorunu halletmenin yolu ise, javascript e dayanıyor. Madem ki tarayıcılar bizim istediğimiz sonucu vermiyor, o halde zorla verdirtiriz 😉

 

 

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset="UTF-8">
</head>
<body>
<div style="text-transform:uppercase">a b c ç d e f g ğ h ı i j k l m n o ö p r s ş t u ü v y z (kaynak)</div> 
<div>A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z (iki satır bu şekilde görünmeli)</div>

<script>
    function getStyle(element, style) {
        var result;

        if (document.defaultView && document.defaultView.getComputedStyle) {
            result = document.defaultView.getComputedStyle(element, '').getPropertyValue(style);
        } else if(element.currentStyle) {
            style = style.replace(/\-(\w)/g, function (strMatch, p1) {
                return p1.toUpperCase();
            });
            result = element.currentStyle[style];
        }
        return result;
    }

    function replaceRecursive(element) {
        if (element && element.style && getStyle(element, 'text-transform') == 'uppercase') {
            element.innerHTML = element.innerHTML.replace(/ı/g, 'I');
            element.innerHTML = element.innerHTML.replace(/i/g, 'İ');  
        }

        if (!element.childNodes || element.childNodes.length == 0) return;

        for (var n in element.childNodes) {
            replaceRecursive(element.childNodes[n]);
        }
    }

    window.onload = function() { 
        replaceRecursive(document.getElementsByTagName('body')[0]);
    }
</script>

</body>
</html>

 

Yorum Bırak

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir