How can I change the title of the document during .ready()?

JavascriptJqueryRuby on-Rails

Javascript Problem Overview


I am using some nested layouts in Ruby on Rails, and in one of the layouts i have a need to read in a string from a div and set that as the title of the document. What is correct way (if any) to set the title of the document?

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

});
</script>

Javascript Solutions


Solution 1 - Javascript

The following should work but it wouldn't be SEO compatible. It's best to put the title in the title tag.

<script type="text/javascript">

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

</script>

Solution 2 - Javascript

Do not use $('title').text('hi'), because IE doesn't support it.

It is better to use document.title = 'new title';

Solution 3 - Javascript

This works fine in all browser...

$(document).attr("title", "New Title");

Works in IE too

Solution 4 - Javascript

Like this:

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

Be sure to set a default-title if you want your site to be properly indexed by search-engines.

A little tip:

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

Solution 5 - Javascript

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

    $(this).attr("title", "sometitle");

});
</script>

Solution 6 - Javascript

document.title was not working for me.

Here is another way to do it using JQuery

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

Solution 7 - Javascript

> I am using some nested layouts in Ruby on Rails, and in one of the layouts i have a need to read in a string from a div and set that as the title of the document.

The correct way to do this is on the server side.

In your layout, there at some point will be some code which puts the text in the div. Make this code also set some instance variable such as @page_title, and then in your outer layout have it do <%= @page_title || 'Default Title' %>

Solution 8 - Javascript

If you have got a serverside script get_title.php that echoes the current title session this works fine in jQuery:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJason MiesionczekView Question on Stackoverflow
Solution 1 - JavascriptdpanView Answer on Stackoverflow
Solution 2 - JavascriptvasioView Answer on Stackoverflow
Solution 3 - JavascriptAlbertView Answer on Stackoverflow
Solution 4 - JavascriptcllpseView Answer on Stackoverflow
Solution 5 - JavascriptAtanas KorchevView Answer on Stackoverflow
Solution 6 - JavascriptJohn FView Answer on Stackoverflow
Solution 7 - JavascriptOrion EdwardsView Answer on Stackoverflow
Solution 8 - JavascriptandreasView Answer on Stackoverflow