jQuery: .ready () sırasında belgenin başlığı nasıl değiştirilir?


146

Ruby on Rails bazı iç içe düzenleri kullanıyorum ve düzenlerinden birinde bir div bir dize okumak ve belgenin başlığı olarak ayarlamak için bir ihtiyaç var. Belgenin başlığını ayarlamanın doğru yolu (varsa) nedir?

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

    // ???

});
</script>

Sadece başlık etiketi serveride neden ayarlanmadığını merak edenler için bir açıklama: Bazen sayfa içerik ve eylem karışık olarak oluşturulur. Yani ilk önce bir incude dosyası olabilir, bu da başlığı yapar, sonra içerik bir veritabanından, örneğin müşteri adı gibi alınır. Bu, başlığın gönderildiği sırada müşteri adı bilinmediği anlamına gelir. İş mantığını ve sunumu ayırmayan özensiz kodlama, önce tüm verileri alın, sonra dağıtın, ancak bazen sahip olduğunuz şey budur. Patron: "Sadece özel adı" Sen "başlığına koy.
Leif Neland

Yanıtlar:


310

Aşağıdaki çalışması gerekir, ancak SEO uyumlu olmaz. Başlığı başlık etiketine koymak en iyisidir.

<script type="text/javascript">

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

</script>

14
JavaScript tarafından oluşturulan herhangi bir HTML, SEO ile uyumlu olmaz mı? Googlebot'un javascript yürütmediğinden eminim ...
Orion Edwards

1
Google Bot'a sayfalarınız Ajax ile yapıldığında ne okuyacağını söylemenin yolları olduğunu okudum ... dolaşmaya çalışıyorum.
trusktr

2
@trusktr: Sanırım şu Google makalesinden bahsediyorsunuz: AJAX Uygulamalarını Taranabilir Yapma . Ancak bu tür bir sorunla HİÇBİR ZAMANI yoktur, bu yüzden Orion Edwards haklıdır. Google'ın normalde AJAX ile oluşturulan içerikleri HTML anlık görüntüleri ve bazı sunucu tarafı değişiklikleri yoluyla okumasına izin veren bir yöntemdir.
Sk8erPeter

1
FF 29.0.1'de benim için çalışmıyor, ancak aşağıda açıklanan bu çözüm çalışıyor: stackoverflow.com/a/11171548/1915920
Andreas Dietrich

2
@OrionEdwards Şimdi, beş yıldan fazla bir süre sonra, rimmkaufman.com/blog/googlebot-crawling-javascript-site-ready/…
kqr

48

Kullanmayın $('title').text('hi')IE bunu desteklemediği için.

Kullanmak daha iyidir document.title = 'new title';



36

Bunun gibi:

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

Sitenizin arama motorları tarafından uygun şekilde dizine eklenmesini istiyorsanız varsayılan bir başlık ayarladığınızdan emin olun.

Küçük bir ipucu:

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

3
Kestirme şeyi kendi içinde yeni bir "Soru" olarak yayınlamalısınız. Kullanışlı!
MDCore

Seni anladığımdan emin değilim MDCore.
cllpse

Jeff, birinin bloguna koyabileceği teknik ipuçları için stackoverflow kullanılmasını önerdi. İpucu, kendinize cevapladığınız yeni bir soru olarak yayınlamanızı öneriyordum.
MDCore

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

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

});
</script>

2
evet, aslında, IE hata$('title').text(...) nedeniyle kullanamazsınız
TMS

1
Neden olmasın document.title?
adardesign

6

document.title benim için çalışmıyor.

JQuery kullanarak bunu yapmanın başka bir yolu

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

benim için de (FF 29.0.1) ve hiç bir <title>ayar yoksa, $('html head').add('<title>override default title</title>')işe yaramıyor
Andreas Dietrich

2
Bu SEO dostu mu?
SearchForKnowledge

5

Ruby on Rails bazı iç içe düzenleri kullanıyorum ve düzenlerinden birinde bir div bir dize okumak ve belgenin başlığı olarak ayarlamak için bir ihtiyaç var.

Bunu yapmanın doğru yolu sunucu tarafındadır.

Düzeninizde, bir noktada metni div'e yerleştiren bir kod olacaktır . Bu kodu da gibi bir örnek değişken ayarlayın @page_titleve dış düzeninizde bunu yapın<%= @page_title || 'Default Title' %>


-2

Geçerli başlık oturumunu yansıtan bir sunucu tarafı betiği get_title.php varsa, bu jQuery iyi çalışır:

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

2
bence başlık ayarlamak için bir ajax isteği yapmak çok savurgan.
Jason Miesionczek

2
OP özellikle bir istemci tarafı sorununa bir jQuery çözümü istedi.
Joel Etherton

1
Başlığı ajax aracılığıyla ayarlamak yararlıdır, çünkü kullanıcı farklı bir sayfada olduğunda mevcut tarayıcı sekmesini tanımlamaya yardımcı olabilir.
chim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.