jQuery: як змінити назву документа під час .ready ()?


146

Я використовую кілька вкладених макетів у Ruby on Rails, і в одному з макетів у мене є необхідність читати в рядку з div і встановлювати це як заголовок документа. Який правильний спосіб (якщо такий є) встановити заголовок документа?

<script type="text/javascript">
$(document).ready(function() {

    // ???

});
</script>

Просто пояснення тим, хто цікавиться, чому не просто встановити сторону тегів заголовків: Іноді сторінка генерується зі змістом та змішаними діями. Тобто у вас може бути спочатку файл incude-файла, який створює заголовок, потім вміст витягується з бази даних, наприклад, ім'я клієнта. Що означає на момент надсилання назви, ім’я клієнта невідомо. Це неохайне кодування, яке не розділяє ділову логіку та презентацію, спочатку отримуйте всі дані, а потім демонструйте їх, але іноді це те, що у вас є. Бос: "Просто поставте ім'я клієнта в заголовок" Ви ", я повинен перефактурувати весь код".
Лейф Неланд

Відповіді:


310

Наступне має працювати, але це не буде сумісно з SEO. Найкраще ввести заголовок у тег заголовка.

<script type="text/javascript">

    $(document).ready(function() {
        document.title = 'blah';
    });

</script>

14
Невже будь-який створений JavaScript не може бути SEO несумісним? Я майже впевнений, що googlebot не виконує JavaScript ...
Orion Edwards

1
Я читав, що є способи сказати Google Bot, що читати, коли ваші сторінки створені за допомогою Ajax ... намагаючись гугнути навколо.
trusktr

2
@trusktr: Я думаю, ви говорите про цю статтю Google: Здійснення сканування програми AJAX . Але це не має нічого спільного з подібними проблемами, тому Оріон Едвардс має рацію. Це просто метод, який дозволяє Google читати вміст, який зазвичай генерується за допомогою AJAX, за допомогою знімків HTML та деяких модифікацій на стороні сервера.
Sk8erPeter

1
для мене не працює FF 29.0.1, але це рішення, описане нижче, працює: stackoverflow.com/a/11171548/1915920
Андреас Дітріх

2
@OrionEdwards Тепер, через п'ять років, rimmkaufman.com/blog/googlebot-crawling-javascript-site-ready/…
kqr

48

Не використовувати $('title').text('hi') , оскільки IE не підтримує.

Краще використовувати document.title = 'new title';



36

Подобається це:

$(document).ready(function ()
{
    document.title = "Hello World!";
});

Не забудьте встановити титул за замовчуванням, якщо ви хочете, щоб ваш сайт був правильно індексований пошуковими системами.

Маленька порада:

$(function ()
{
    // this is a shorthand for the whole document-ready thing
    // In my opinion, it's more readable 
});

3
Ви повинні опублікувати скорочену річ як нове "Запитання" саме по собі. Корисно!
MDCore

Не впевнений, що я вас розумію, MDCore.
cllpse

Джефф запропонував використовувати stackoverflow для тих технічних порад, які можна розмістити у своєму блозі. Я пропонував опублікувати пораду як нове запитання, на яке ви самі відповісте.
MDCore


6

document.title для мене не працює.

Ось ще один спосіб зробити це за допомогою JQuery

$('html head').find('title').text("My New Page Title");

для мене (FF 29.0.1), і якщо взагалі немає <title>налаштування, навіть $('html head').add('<title>override default title</title>')не працює
Andreas Dietrich

2
Це SEO дружнє?
SearchForKnowledge

5

Я використовую кілька вкладених макетів у Ruby on Rails, і в одному з макетів у мене є необхідність читати в рядку з div і встановлювати це як заголовок документа.

Правильний спосіб зробити це на стороні сервера.

У вашому макеті в якийсь момент буде якийсь код, який додає текст у діві . Зробіть так, щоб цей код також встановив певну змінну екземпляра, наприклад @page_title, і тоді у вашому зовнішньому макеті це зробити<%= @page_title || 'Default Title' %>


-2

Якщо у вас є серверний скрипт get_title.php, який повторюється поточним сеансом заголовка, це добре працює у jQuery:

$.get('get_title.php',function(*respons*){
    title=*respons* + 'whatever you want'   
    $(document).attr('title',title)
})

2
робити запит Ajax на встановлення заголовка, на мій погляд, дуже марно.
Jason Miesionczek

2
ОП спеціально попросило рішення jQuery для проблеми клієнта.
Джоел Етертон

1
Налаштування заголовка через ajax корисно, оскільки може допомогти визначити поточну вкладку браузера для користувача, коли він перебуває на іншій сторінці.
шим
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.