Прописная первая буква строки перебивает в IE7 - PullRequest
4 голосов
/ 14 декабря 2011
actualizarTituloWeb('brand name - '+seccion.toLowerCase().replace(/(?:_| |\b)(\w)/g, function(str, p1) { return p1.toUpperCase()}));

, где

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

Также пробовал с:

function actualizarTituloWeb(titulo){

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

            titulo = titulo.toLowerCase();

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

        return false;
}

и seccion имеет такие значения, как 'reserva', 'ofertas', ..

Я не совсем уверен, почему не работает, но это на самом деле приводит к аварийному завершению всего скрипта (можно проверить вживую здесь: http://toniweb.us/gm2) в IE7, и название текущего документа не обновляется,

Есть идеи, что мне не хватает?

-EDIT-

Только что понял, что проблема в этой строке! почему?

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

Обратите внимание: Мы не можем использовать CSS здесь для достижения этой цели, потому что он будет использоваться для document.title

Ответы [ 3 ]

5 голосов
/ 14 декабря 2011

В JScript <= 5.7 (IE 7) вы не можете получить доступ к строке как массив.Вместо этого вы должны использовать <code>String.charAt().Подобный массиву доступ стандартизирован в ES 5.

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

Кроме того, $('title').text(titulo); не работает лучше.В IE до версии 8 нельзя установить (или получить) заголовок с помощью textContent элемента 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>

use document.title

document.title = titulo;
1 голос
/ 14 декабря 2011

С небольшой модификацией шаблона регулярных выражений ожидаемое поведение будет достигнуто

actualizarTituloWeb('brand name - ' + seccion.toLowerCase().replace(/(^|\s|\-)(.)/gi, function(c) { return c.toUpperCase()}));
0 голосов
/ 14 декабря 2011

Почему бы вам не сделать что-то вроде:

var str = "blah blah";
str = str.toLowerCase();
str = str[0].toUpperCase() + str.substring(1);
document.title = str;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...