我有一个网页,实现了一组选项卡,每个选项卡都显示不同的内容。选项卡点击不会刷新页面,而是在客户端隐藏/显示内容。
现在有一个要求,根据页面上选择的选项卡更改页面标题(出于SEO原因)。这可能吗?有人能建议通过javascript动态修改页面标题而不重新加载页面的解决方案吗?
我有一个网页,实现了一组选项卡,每个选项卡都显示不同的内容。选项卡点击不会刷新页面,而是在客户端隐藏/显示内容。
现在有一个要求,根据页面上选择的选项卡更改页面标题(出于SEO原因)。这可能吗?有人能建议通过javascript动态修改页面标题而不重新加载页面的解决方案吗?
更新:根据SearchEngineLand上的评论和参考,大多数网络爬虫将索引更新后的标题。下面的答案已过时,但代码仍然适用。
你可以像这样做:
document.title = "这是新的页面标题。";
,但这完全违背了SEO的初衷。大多数爬虫本来就不支持javascript,因此它们会把在<title>元素中的任何内容作为页面标题。如果您希望兼容大多数重要的网络爬虫,您需要实际更改标题标签本身,这需要重新加载页面(使用PHP或类似工具)。如果您想以一种爬虫可以看到的方式更改页面标题,则无法避免这一点。
我想向你们来自未来的问候 :) 最近发生的事情如下:
因此,回答您的问题,您可以安全地通过JavaScript更改标题和其他元标记(如果您想支持非Google搜索引擎,还可以添加类似于https://prerender.io的东西),只需将它们作为单独的URL进行访问(否则,Google怎么知道这些是要在搜索结果中显示为不同页面的呢?)。更改与SEO相关的标记(用户通过单击某个内容后所做的更改)非常简单:
if (document.title != newTitle) {
document.title = newTitle;
}
$('meta[name="description"]').attr("content", newDescription);
请确保robots.txt文件中没有阻止css和javascript,您可以使用Google网站管理员工具中的Fetch as Google服务。
1: http://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157
document.title != newTitle
)有什么用处? - Volod使用document.title
。
另外,可以参考这个页面的基础教程。
代码如下
document.title = '测试'
;
吗? - MineCMD我不明白通过Javascript更改页面标题如何有助于SEO。大多数(或全部)搜索机器人不会运行Javascript,仅会读取最初加载的标记的标题。
如果您想帮助SEO,则需要在后台更改页面标题并提供不同版本的页面。
window.history
时,除了URL之外,更新页面标题也是很好的。 - rmorse您可以通过多种方式更改标题,其中主要的两种方法如下:
在HTML中放置一个标题标签(例如<title>Hello</title>
),然后在JavaScript中:
let title_el = document.querySelector("title");
if(title_el)
title_el.innerHTML = "World";
最简单的方法是实际使用文档对象模型(DOM)提供的方法。
document.title = "Hello World";
title
)中找到的元数据标记是可疑的做法,不符惯例,风格不太好,并且可能不具备可移植性。但有一件事可以肯定,如果其他开发人员看到他们正在维护的代码中出现title.innerHTML = ...
,那么它会使他们感到恼火。未定义行为
(这里有龙),这本身就是一个可怕的概念。这可能会通过JavaScript发生,也可能不会,因为DOM文档对JavaScript并不一定适用。但是XUL是另一种全新的技术,所以我岔开了话题。.innerHTML
。
需要记住的一些好建议是,通常使用.innerHTML
比较粗糙。改用appendChild
。
尽管还有两种情况我发现.innerHTML
仍然很有用,包括将纯文本插入到小元素中...
label.innerHTML = "Hello World";
// as opposed to...
label.appendChild(document.createTextNode("Hello World"));
// example:
el.appendChild(function(){
let el = document.createElement("span");
el.className = "label";
el.innerHTML = label_text;
return el;
}());
...清空容器...
container.innerHTML = "";
// as opposed to... umm... okay, I guess I'm rolling my own
[...container.childNodes].forEach(function(child){
container.removeChild(child);
});
document.querySelector.apply
,你认真的吗? - Andrey Tarantsov在JavaScript中,使用document.title可以实现此功能,但是这如何有助于SEO呢?搜索引擎爬虫通常不会在遍历页面时执行JavaScript代码。
您需要使用新标题重新提供页面,以便任何网络爬虫注意到更改。通过JavaScript执行此操作只有对人类读者有益处,网络爬虫不会执行该代码。
my app | description | contact | about us |
一旦您加载选项卡之一,请运行:
document.title = "my app | tab title";
document.title = "new title";
但如果页面有iframe,则可以使用:window.top.document.title
。 - S.Serpooshan