actualizarTituloWeb('brand name - '+seccion.toLowerCase().replace(/(?:_| |\b)(\w)/g, function(str, p1) { return p1.toUpperCase()}));

function actualizarTituloWeb(titulo){
        $( 'title' ).html ( titulo );  
}

A également essayé avec:

function actualizarTituloWeb(titulo){

        titulo = titulo[0].toUpperCase() + titulo.substring(1);

            titulo = titulo.toLowerCase();

            $( 'title' ).text ( titulo );

        return false;
}

Et seccion a des valeurs telles que 'reserva', 'ofertas', ..

Je ne sais pas vraiment pourquoi ne fonctionne pas, mais cela fait planter le script en entier (peut être testé en direct ici: http: // toniweb.us/gm2) dans IE7 et le titre du document actuel n'est ni mis à jour,

Une idée de ce qui me manque?

-ÉDITER-

Je viens de réaliser que le problème est dans cette ligne! Pourquoi?

titulo = titulo[0].toUpperCase() + titulo.substring(1);

Veuillez noter: Nous ne pouvons pas utiliser CSS ici pour y parvenir car il sera utilisé pour le document.title

4
Toni Michel Caubet 14 déc. 2011 à 13:05

3 réponses

Meilleure réponse

Dans JScript <= 5.7 (IE 7), vous ne pouvez pas accéder à une chaîne comme un tableau. Vous devez utiliser String.charAt() à la place. L'accès de type baie est standardisé dans ES 5.

titulo = titulo.charAt(0).toUpperCase() + titulo.substring(1);

De plus, $('title').text(titulo); ne fonctionne pas mieux. Dans les IE jusqu'à la version 8, vous ne pouvez pas définir (ou obtenir) le titre par le textContent de l'élément title.

<html>
<head>
    <title>test</title>
</head>
<body>
    <script type='text/javascript'>
document.getElementsByTagName('title')[ 0 ].firstChild // null in IE <= 8
                                                       // IE 9 (and other browser): text node with nodeValue 'test'
    </script>
</body>
</html>

Utilisez document.title

document.title = titulo;
5
Saxoier 14 déc. 2011 à 19:33

Avec une petite modification du modèle d'expression régulière, le comportement attendu sera atteint

actualizarTituloWeb('brand name - ' + seccion.toLowerCase().replace(/(^|\s|\-)(.)/gi, function(c) { return c.toUpperCase()}));
1
Maxim Manco 14 déc. 2011 à 23:03

Pourquoi ne faites-vous pas quelque chose comme:

var str = "blah blah";
str = str.toLowerCase();
str = str[0].toUpperCase() + str.substring(1);
document.title = str;
0
paulslater19 14 déc. 2011 à 09:25