jQuery:.ready()中にドキュメントのタイトルを変更する方法?


146

Ruby on Railsでいくつかのネストされたレイアウトを使用しています。レイアウトの1つで、divから文字列を読み取り、それをドキュメントのタイトルとして設定する必要があります。ドキュメントのタイトルを設定する正しい方法(ある場合)は何ですか?

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

    // ???

});
</script>

タイトルタグをサーバーサイドに設定するだけではないのではないかと疑問に思っている方への単なる説明:コンテンツとアクションが混在するページが生成される場合があります。つまり、最初にヘッダーを作成するincude-fileを作成し、次にコンテンツをデータベース(顧客名など)から取得します。つまり、タイトルが送信された時点では、顧客名は不明です。これは、ビジネスロジックとプレゼンテーションを分離せず、最初にすべてのデータを取得し、次にそれを非表示にするのではなく、ずさんなコーディングですが、時々それはあなたが持っているものです。上司:「タイトルに顧客名を入れてください」「すべてのコードをリファクタリングする必要があります」
Leif Neland

回答:


310

以下は動作するはずですが、SEO互換ではありません。タイトルタグにタイトルを入れるのが最善です。

<script type="text/javascript">

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

</script>

14
JavaScriptで生成されたHTMLはSEOと互換性がありませんか?私はgooglebotがjavascriptを実行しないと確信しています...
Orion Edwards

1
Ajaxを使用してページを作成した場合、Google Botに何を読むかを指示する方法があることを読みました...グーグルで試します。
trusktr

2
@trusktr:Googleの記事「AJAXアプリケーションをクロール可能にする」について話していると思います。しかし、それはこの種の問題とは何の関係もないので、Orion Edwardsは正しいです。これは、通常、AJAXで生成されたコンテンツを、HTMLスナップショットやサーバー側の変更を介してGoogleに読み取らせるための単なる方法です。
Sk8erPeter 2012

1
私にとってFF 29.0.1では機能しませんが、以下で説明するこの解決策は機能します:stackoverflow.com/a/11171548/1915920
Andreas Dietrich

2
KQR

48

$('title').text('hi')IEではサポートされていないため、は使用しないでください。

使う方がいい document.title = 'new title';



36

このような:

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

検索エンジンでサイトを適切にインデックスに登録する場合は、必ずdefault-titleを設定してください。

少しヒント:

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

3
略記はそれ自体を新しい「質問」として投稿する必要があります。有用!
MDCore 2008年

MDCore、あなたの言うことがよくわかりません。
cllpse

Jeffは、ブログに載せる可能性のある技術的なヒントには、stackoverflowを使用することを提案しています。あなたが自分で答える新しい質問としてチップを投稿することを提案しました。
MDCore 2008年


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でいくつかのネストされたレイアウトを使用しています。レイアウトの1つで、divから文字列を読み取り、それをドキュメントのタイトルとして設定する必要があります。

これを行う正しい方法は、サーバー側です。

レイアウトでは、ある時点で、テキストを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
OPは、クライアント側の問題に対するjQueryソリューションを具体的に要求しました。
Joel Etherton、2011年

1
ajaxを介してタイトルを設定すると、ユーザーが別のページにいるときに現在のブラウザータブを識別しやすくなるため便利です。
チム2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.