jQuery: पहले से ही () के दौरान दस्तावेज़ का शीर्षक कैसे बदलना है?


146

मैं रूबी ऑन रेल्स में कुछ नेस्टेड लेआउट्स का उपयोग कर रहा हूं, और एक लेआउट में मुझे एक डिव से एक स्ट्रिंग में पढ़ने की आवश्यकता है और इसे दस्तावेज़ के शीर्षक के रूप में सेट करना है। दस्तावेज़ का शीर्षक सेट करने का सही तरीका (यदि कोई हो) क्या है?

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

    // ???

});
</script>

सिर्फ शीर्षक टैग सर्वरसाइड को सेट करने के लिए क्यों नहीं सोच रहे लोगों के लिए बस एक स्पष्टीकरण: कभी-कभी पृष्ठ सामग्री और कार्रवाई मिश्रित के साथ उत्पन्न होता है। यानी आपके पास पहले एक असभ्य फ़ाइल हो सकती है, जो हेडर बनाती है, फिर सामग्री को डेटाबेस, जैसे ग्राहक नाम से खींचा जा रहा है। इसका मतलब है कि जिस समय शीर्षक भेजा गया है, ग्राहक का नाम ज्ञात नहीं है। यह मैला कोडिंग है जो व्यवसाय तर्क और प्रस्तुति को अलग नहीं कर रहा है, पहले सभी डेटा प्राप्त करें, फिर इसे हटा दें, लेकिन कभी-कभी ऐसा होता है। बॉस: "बस" आप "मुझे सभी कोड को रिफलेक्टर करना है।"
लीफ नेलैंड

जवाबों:


310

निम्नलिखित काम करना चाहिए, लेकिन यह एसईओ संगत नहीं होगा। टाइटल टैग में शीर्षक लगाना सबसे अच्छा है।

<script type="text/javascript">

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

</script>

14
क्या कोई जावास्क्रिप्ट-जेनरेट किया गया HTML एसईओ असंगत नहीं होगा? मुझे पूरा यकीन है कि googlebot जावास्क्रिप्ट को निष्पादित नहीं करता है ...
ओरियन एडवर्ड्स

1
मैंने पढ़ा है कि Google बीओटी को बताने के तरीके हैं कि जब आपके पेज अजाक्स के साथ बने हों तो क्या पढ़ना है ... चारों ओर गुगली करना।
trusktr

2
@trusktr: मुझे लगता है कि आप इस Google-लेख के बारे में बात कर रहे हैं: AJAX एप्लिकेशन बनाना क्रॉलेबल । लेकिन इसका इस तरह की समस्या से कोई लेना-देना नहीं है, इसलिए ओरियन एडवर्ड्स सही है। यह केवल Google स्नैपशॉट और कुछ सर्वर साइड संशोधनों के माध्यम से AJAX के साथ जेनरेट होने वाली सामग्री को पढ़ने देने के लिए एक विधि है।
Sk8erPeter

1
मेरे लिए FF 29.0.1 में काम नहीं करता है, लेकिन यह समाधान नीचे वर्णित काम करता है: stackoverflow.com/a/11171548/1915920
एंड्रियास डिट्रीच

2
@ ओरियनएडवर्ड्स अब, पांच साल से अधिक समय के बाद, rimmkaufman.com/blog/googlebot-crawling-javascript-site-ready/…
kqr

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 को समझता हूं।
cllpse

जेफ ने सुझाव दिया है कि एक उन तकनीकी युक्तियों के लिए स्टैकओवरफ्लो का उपयोग करता है जो किसी के ब्लॉग पर डाल सकते हैं। मैं टिप को एक नए प्रश्न के रूप में पोस्ट करने का सुझाव दे रहा था जिसका आप स्वयं उत्तर देते हैं।
MDCore


6

document.title मेरे लिए काम नहीं कर रहा था।

यह JQuery का उपयोग करने का एक और तरीका है

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

मेरे लिए या तो (एफएफ 29.0.1) और अगर कोई <title>सेट अप नहीं है , तो भी $('html head').add('<title>override default title</title>')काम नहीं करता है
एंड्रियास डाइटरिच

2
क्या यह SEO फ्रेंडली है?
SearchForKnowledge

5

मैं रूबी ऑन रेल्स में कुछ नेस्टेड लेआउट्स का उपयोग कर रहा हूं, और एक लेआउट में मुझे एक डिव से एक स्ट्रिंग में पढ़ने की आवश्यकता है और इसे दस्तावेज़ के शीर्षक के रूप में सेट करना है।

ऐसा करने का सही तरीका सर्वर की तरफ है।

आपके लेआउट में, कुछ बिंदु पर कुछ कोड होगा जो पाठ को div में रखता है । इस कोड को कुछ इंस्टेंस वेरिएबल भी सेट करें जैसे कि @page_title, और फिर आपके बाहरी लेआउट में है<%= @page_title || 'Default Title' %>


-2

यदि आपको एक सर्वराइड स्क्रिप्ट get_title.php मिल गई है, जो वर्तमान शीर्षक सत्र को echoes करती है तो यह jQuery में ठीक काम करती है:

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

2
शीर्षक स्थापित करने के लिए अजाक्स अनुरोध करना मेरी राय में बहुत ही बेकार है।
जेसन Miesionczek

2
ओपी ने विशेष रूप से क्लाइंट-साइड समस्या के लिए एक jQuery समाधान का अनुरोध किया।
जोएल एथरटन

1
अजाक्स के माध्यम से शीर्षक सेट करना उपयोगी है, क्योंकि यह एक अलग पृष्ठ पर होने पर उपयोगकर्ता के लिए वर्तमान ब्राउज़र टैब को पहचानने में मदद कर सकता है।
चिम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.