如何在 .ready() 期间更改文档的标题?

Posted

技术标签:

【中文标题】如何在 .ready() 期间更改文档的标题?【英文标题】:How can I change the title of the document during .ready()? 【发布时间】:2010-09-15 20:35:33 【问题描述】:

我在 Ruby on Rails 中使用了一些嵌套布局,在其中一个布局中,我需要从 div 中读取字符串并将其设置为文档的标题。设置文档标题的正确方法(如果有)是什么?

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

    // ???

);
</script>

【问题讨论】:

对于那些想知道为什么不只是在服务器端设置标题标签的人的解释:有时页面是由内容和动作混合生成的。 IE。您可能首先有一个包含文件,它制作标题,然后从数据库中提取内容,例如顾客姓名。这意味着在发送标题时,客户名称是未知的。这是草率的编码,没有分离业务逻辑和表示,首先获取所有数据,然后显示它,但有时这就是你所拥有的。老板:“把客户名放在标题里就行了”你“我要重构所有代码。” 【参考方案1】:

以下内容应该可行,但与 SEO 不兼容。最好把title放在title标签里。

<script type="text/javascript">

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

</script>

【讨论】:

不会有任何 javascript 生成的 html 与 SEO 不兼容吗?我很确定 googlebot 不会执行 javascript... 我读到有一些方法可以告诉 Google Bot 在使用 Ajax 制作页面时要阅读的内容...尝试谷歌搜索。 @trusktr:我认为您正在谈论这篇 Google 文章:Making AJAX Applications Crawlable。但这与这类问题无关,所以 Orion Edwards 是对的。这只是一种让 Google 通过 HTML 快照和一些服务器端修改来读取通常使用 AJAX 生成的内容的方法。 对我来说在 FF 29.0.1 中不起作用,但下面描述的这个解决方案有效:***.com/a/11171548/1915920 @OrionEdwards 现在,五年多后,rimmkaufman.com/blog/googlebot-crawling-javascript-site-ready/…【参考方案2】:

不要使用$('title').text('hi'),因为IE不支持。

最好使用document.title = 'new title';

【讨论】:

【参考方案3】:

这在所有浏览器中都可以正常工作...

$(document).attr("title", "New Title");

在 IE 中也可以使用

【讨论】:

【参考方案4】:

像这样:

$(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 
);

【讨论】:

您应该将速记内容本身作为一个新的“问题”发布。有用! 不确定我是否理解你,MDCore。 Jeff 建议使用 *** 来获取可能放在博客上的技术提示。我建议将提示作为您自己回答的新问题发布。【参考方案5】:
<script type="text/javascript">
$(document).ready(function() 

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

);
</script>

【讨论】:

是的,实际上,你不能使用$('title').text(...),因为bug in IE 为什么不document.title【参考方案6】:

document.title 不适合我。

这是使用 JQuery 的另一种方法

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

【讨论】:

对我来说也是(FF 29.0.1),如果根本没有设置&lt;title&gt;,即使$('html head').add('&lt;title&gt;override default title&lt;/title&gt;') 也不起作用【参考方案7】:

我在 Ruby on Rails 中使用了一些嵌套布局,在其中一个布局中,我需要从 div 中读取字符串并将其设置为文档的标题。

正确的做法是在服务器端。

在您的布局中,有时会有一些代码将文本放入 div。让这段代码也设置一些实例变量,例如@page_title,然后在你的外部布局中让它做&lt;%= @page_title || 'Default Title' %&gt;

【讨论】:

【参考方案8】:

如果您有一个与当前标题会话相呼应的服务器端脚本 get_title.php,这在 jQuery 中可以正常工作:

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

【讨论】:

在我看来,做一个ajax请求来设置标题是非常浪费的。 OP 专门请求一个客户端问题的 jQuery 解决方案。 通过 ajax 设置标题很有用,因为它可以帮助在用户处于不同页面时识别当前浏览器选项卡。

以上是关于如何在 .ready() 期间更改文档的标题?的主要内容,如果未能解决你的问题,请参考以下文章

如何在更新期间更改应用程序的类别? [复制]

如何在解析期间设置 github 令牌的自动更改?

如何在 dragover/dragenter HTML 5 拖放期间更改图标

Bigquery如何在List操作期间过滤表和视图

如何在 iOS 7 启动期间更改状态栏样式

如何在 OMNeT++ 中模拟期间更改网络配置?