Answers:
更新:根据SearchEngineL上的注释和参考, 大多数网络爬虫将为更新的标题编制索引。下面的答案已过时,但代码仍然适用。
您可以做类似的事情
document.title = "This is the new page 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网站站长工具中使用Google抓取方式服务。
1:http://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157
我看不到通过Javascript更改页面标题将如何帮助SEO。大多数(或所有)搜索bot不运行Java脚本,而只会读取最初加载的标题(即标记)。
如果您想帮助SEO,则需要在后端更改页面标题并提供不同版本的页面。
window.history
更新页面标题,或者使用HTML5 / JS时更新页面标题和URL
使用document.title
。
另请参阅此页面以获取基本教程。
该代码是
document.title = 'test'
;
在末尾添加a ?
您可以通过多种方式更改标题,主要的两种方法如下:
将标题标签放入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 = ...
在所维护的代码中看到它们,则会使其他开发人员感到烦恼。
您想要使用的是后一种方法。DOM规范中提供了此属性。顾名思义,专门用于更改标题。
还请注意,如果您使用的是XUL,则可能要在尝试设置或获取标题之前检查文档是否已加载,否则您正在调用 undefined behavior
(这里是龙),这本身就是一个可怕的概念。这可能通过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);
});
undefined behavior
。
document.querySelector.apply
,认真吗?
对于那些寻找它的npm版本的人,这里有一个完整的库:
npm install --save react-document-meta
import React from 'react';
import DocumentMeta from 'react-document-meta';
class Example extends React.Component {
render() {
const meta = {
title: 'Some Meta Title',
description: 'I am a description, and I can create multiple tags',
canonical: 'http://example.com/path/to/page',
meta: {
charset: 'utf-8',
name: {
keywords: 'react,meta,document,html,tags'
}
}
};
return (
<div>
<DocumentMeta {...meta} />
<h1>Hello World!</h1>
</div>
);
}
}
React.render(<Example />, document.getElementById('root'));
采用 document.title
。它对大多数事情都很有用,但会破坏您网站上的SEO。
例:
document.write("title - " + document.title + "<br>");
document.title = "New title here!";
// Notice: this will defeat purpose of SEO. Not useful for SEO-friendly sites.
document.write("title - " + document.title + "<br>");
body {
font-family: Consolas, 'Courier New', monospace;
}
<!DOCTYPE html>
<html>
<head><title>Old title</title></head>
<body><p>
Lorem ipsum dolor sit amet, at movet detraxit mediocritatem eam, nam iusto abhorreant ne. Ei pro debet adolescens voluptaria, eu minim scaevola conceptam vel. Vim ea torquatos constituto complectitur, usu eu civibus insolens eleifend. Ex ubique quaerendum his.
</p></body>
</html>
您可以使用JavaScript。包括Google在内的某些机器人将为了SEO的利益执行JavaScript(在SERP中显示正确的标题)。
document.title = "Google will run this JS and show the title in the search results!";
但是,这更加复杂,因为您在不刷新页面或更改URL的情况下显示和隐藏选项卡。如其他人所述,也许添加锚点会有所帮助。我可能需要收回答案。
显示积极结果的文章:http : //www.aukseo.co.uk/use-javascript-to-generate-seo-friendly-title-tags-1275/ http://www.ifinity.com.au/2012/10 / 04 / Changing_a_Page_Title_with_Javascript_to_update_a_Google_SERP_Entry
不要总是假设机器人不会执行JavaScript。 http://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157 Google和其他搜索引擎知道,要编制索引的最佳结果是实际最终用户将在浏览器中看到的结果,包括JavaScript。
由于搜索引擎会忽略大多数javascript,因此您需要制作它,以便搜索引擎可以使用选项卡进行爬网而无需使用Ajax。使每个选项卡都具有一个带有href的链接,该链接将加载选中该选项卡的整个页面。然后页面可以在标签中具有该标题。
onclick事件处理程序仍可以通过ajax为人类查看者加载页面。
要在大多数搜索引擎看到的页面中查看它们,请在浏览器中关闭Javascript,然后尝试制作它,以便单击选项卡将加载选择了该选项卡和正确标题的页面。
如果您是通过ajax加载的,并且只想使用Javascript动态更改页面标题,请执行以下操作:
document.title = 'Put the new title here';
但是,搜索引擎不会看到javascript中所做的更改。
最简单的方法是<title>
从index.html 删除标记,并包含
<head>
<title> Website - The page </title></head>
在网络上的每个页面中。蜘蛛会找到并在搜索结果中显示:)