jQuery : .ready () 중에 문서 제목을 변경하는 방법은 무엇입니까?


146

Ruby on Rails에서 일부 중첩 레이아웃을 사용하고 있으며 레이아웃 중 하나에서 div에서 문자열을 읽고 문서의 제목으로 설정해야합니다. 문서 제목을 설정하는 올바른 방법은 무엇입니까?

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

    // ???

});
</script>

제목 태그 서버 측을 설정하지 않는 이유를 궁금해하는 사람들을위한 설명 : 때로는 페이지에 컨텐츠와 조치가 혼합되어 생성됩니다. 즉, 먼저 incude 파일을 가지고 헤더를 만든 다음 고객 이름과 같은 데이터베이스에서 내용을 가져옵니다. 즉, 타이틀을 보낼 당시 고객 이름을 알 수 없습니다. 비즈니스 로직과 프리젠 테이션을 분리하지 않는 조잡한 코딩이며, 모든 데이터를 먼저 얻은 다음,이를 대체하지만 때로는 그것이 당신이 가진 것입니다. 보스 : "제목에 고객 이름을 입력하십시오" "모든 코드를 리 팩터해야합니다."
Leif Neland

답변:


310

다음은 작동하지만 SEO와 호환되지는 않습니다. 제목을 제목 태그에 넣는 것이 가장 좋습니다.

<script type="text/javascript">

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

</script>

14
자바 스크립트로 생성 된 HTML이 SEO와 호환되지 않습니까? 나는 ... Googlebot이 자바 스크립트를 실행하지 않습니다 확신
오리온 에드워즈

1
Ajax로 페이지를 만들 때 Google Bot에 읽을 내용을 알려주는 방법이 있다는 것을 읽었습니다.
trusktr

2
@ trusktr : 당신 이이 Google 기사에 대해 이야기하고 있다고 생각합니다 : AJAX 응용 프로그램을 크롤링 할 수 있습니다. 그러나 이런 종류의 문제와는 아무런 관련이 없으므로 Orion Edwards가 옳습니다. HTML 스냅 샷 및 일부 서버 측 수정을 통해 AJAX로 일반적으로 생성되는 콘텐츠를 Google이 읽을 수 있도록하는 방법 일뿐입니다.
Sk8erPeter

1
FF 29.0.1에서는 작동하지 않지만 아래 설명 된이 솔루션은 작동합니다. stackoverflow.com/a/11171548/1915920
Andreas Dietrich


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

Jeff는 블로그에 올릴 수있는 기술 팁에 대해 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에서 문자열을 읽고 문서의 제목으로 설정해야합니다.

이를 수행하는 올바른 방법은 서버 측입니다.

레이아웃에는 어느 시점 에서 텍스트를 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
제목을 설정하기 위해 아약스 요청을하는 것은 매우 낭비입니다.
Jason Miesionczek

2
OP는 특히 클라이언트 측 문제에 대한 jQuery 솔루션을 요청했습니다.
Joel Etherton

1
ajax를 통해 제목을 설정하면 다른 페이지에있을 때 사용자의 현재 브라우저 탭을 식별하는 데 도움이되므로 유용합니다.
chim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.