jQuery: làm thế nào để thay đổi tiêu đề của tài liệu trong. yet ()?


145

Tôi đang sử dụng một số bố cục lồng nhau trong Ruby on Rails, và trong một trong các bố cục tôi có nhu cầu đọc một chuỗi từ div và đặt đó là tiêu đề của tài liệu. Cách chính xác (nếu có) để đặt tiêu đề của tài liệu là gì?

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

    // ???

});
</script>

Chỉ là một lời giải thích cho những người thắc mắc tại sao không chỉ đặt máy chủ thẻ tiêu đề: Đôi khi trang được tạo với nội dung và hành động trộn lẫn. Tức là bạn có thể có một tập tin incude đầu tiên, làm tiêu đề, sau đó nội dung đang được lấy từ cơ sở dữ liệu, ví dụ như tên khách hàng. Có nghĩa là tại thời điểm tiêu đề đã được gửi, tên khách hàng không được biết. Đó là mã hóa cẩu thả không tách rời logic kinh doanh và trình bày, lấy tất cả dữ liệu trước, sau đó thay thế nó, nhưng đôi khi đó là những gì bạn có. Sếp: "Chỉ cần đặt tên người dùng trong tiêu đề" Bạn "Tôi phải cấu trúc lại tất cả mã."
Leif Neland

Câu trả lời:


310

Những điều sau đây sẽ hoạt động nhưng nó sẽ không tương thích với SEO. Tốt nhất là đặt tiêu đề trong thẻ tiêu đề.

<script type="text/javascript">

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

</script>

14
Sẽ không có bất kỳ HTML nào được tạo bằng javascript không tương thích với SEO? Tôi khá chắc chắn rằng googlebot không thực thi javascript ...
Orion Edwards

1
Tôi đã đọc được rằng có nhiều cách để nói với Google Bot nên đọc gì khi các trang của bạn được tạo bằng Ajax ... đang cố gắng tìm kiếm.
trusktr

2
@trusktr: Tôi nghĩ bạn đang nói về bài viết này của Google: Tạo các ứng dụng AJAX có thể thu thập dữ liệu . Nhưng nó KHÔNG CÓ gì để làm với loại vấn đề này, vì vậy Orion Edwards đã đúng. Đây chỉ là một phương pháp để cho phép Google đọc nội dung thường được tạo bằng AJAX, thông qua ảnh chụp nhanh HTML và một số sửa đổi phía máy chủ.
Sk8erPeter

1
không hoạt động trong FF 29.0.1 đối với tôi, nhưng giải pháp này được mô tả dưới đây hoạt động: stackoverflow.com/a/11171548/1915920
Andreas Dietrich

2
@OrionEdwards Bây giờ, hơn năm năm sau, rimmkaufman.com/blog/googlebot-crawling-javascript-site- yet / Lỗi
kqr

48

Không sử dụng $('title').text('hi'), vì IE không hỗ trợ nó.

Nó là tốt hơn để sử dụng document.title = 'new title';



36

Như thế này:

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

Hãy chắc chắn đặt tiêu đề mặc định nếu bạn muốn trang web của mình được lập chỉ mục chính xác bởi các công cụ tìm kiếm.

Một mẹo nhỏ:

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

3
Bạn nên đăng điều tốc ký dưới dạng "Câu hỏi" mới. Hữu ích!
MDCore

Không chắc chắn tôi hiểu bạn, MDCore.
cllpse

Jeff đã đề nghị một người sử dụng stackoverflow cho những mẹo kỹ thuật mà người ta có thể đưa vào blog của một người. Tôi đã đề nghị đăng mẹo này như một câu hỏi mới mà bạn tự trả lời.
MDCore

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

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

});
</script>

2
vâng, thực sự, bạn không thể sử dụng $('title').text(...)lỗi trong IE
TMS

1
Tại sao không document.title?
adardesign

6

document.title không làm việc cho tôi.

Đây là một cách khác để làm điều đó bằng cách sử dụng JQuery

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

đối với tôi cũng vậy (FF 29.0.1) và nếu không có <title>thiết lập nào cả, thậm chí $('html head').add('<title>override default title</title>')không hoạt động
Andreas Dietrich

2
SEO này có thân thiện không?
SearchForKnowledge

5

Tôi đang sử dụng một số bố cục lồng nhau trong Ruby on Rails, và trong một trong các bố cục tôi có nhu cầu đọc một chuỗi từ div và đặt đó là tiêu đề của tài liệu.

Cách chính xác để làm điều này là ở phía máy chủ.

Trong bố cục của bạn, tại một số điểm sẽ có một số mã đặt văn bản trong div . Làm cho mã này cũng đặt một số biến đối tượng, chẳng hạn như @page_titletrong bố cục bên ngoài của bạn, hãy thực hiện<%= @page_title || 'Default Title' %>


-2

Nếu bạn đã có một tập lệnh máy chủ get_title.php lặp lại phiên tiêu đề hiện tại thì nó hoạt động tốt trong jQuery:

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

2
Theo tôi, thực hiện một yêu cầu ajax để thiết lập tiêu đề là rất lãng phí.
Jason Miesionczek

2
OP đặc biệt yêu cầu một giải pháp jQuery cho một vấn đề phía máy khách.
Joel Etherton

1
Đặt tiêu đề qua ajax rất hữu ích, vì nó có thể giúp xác định tab trình duyệt hiện tại cho người dùng khi họ ở trên một trang khác.
chim
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.