我有一个网页,实现了一组选项卡每个显示不同的内容。单击选项卡不会刷新页面,而是隐藏/取消隐藏客户端的内容。
现在需要根据页面上选择的选项卡更改页面标题(出于SEO原因)。这可能吗?有人能建议一个解决方案,通过javascript动态改变页面标题,而不重新加载页面?
我有一个网页,实现了一组选项卡每个显示不同的内容。单击选项卡不会刷新页面,而是隐藏/取消隐藏客户端的内容。
现在需要根据页面上选择的选项卡更改页面标题(出于SEO原因)。这可能吗?有人能建议一个解决方案,通过javascript动态改变页面标题,而不重新加载页面?
当前回答
对于那些寻找它的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'));
其他回答
想到的一种方法,可能有助于搜索引擎优化,仍然有你的标签页,因为他们将使用命名锚对应于每个标签,如:
http://www.example.com/mypage#tab1, http://www.example.com/mypage#tab2等。
您需要服务器端处理来解析url,并在浏览器呈现页面时设置初始页面标题。我还会把这个标签设置为“活动”标签。一旦页面被加载,一个实际的用户正在切换标签,你将使用javascript来改变文档。标题如其他用户所述。
使用document.title。
请参阅本页的基本教程。
也许你可以在一个字符串中加载你的标题上所有的选项卡标题,然后一旦你加载其中一个选项卡,通过javascript改变标题
首先把你的标题设置为
my app | description | contact | about us |
一旦你加载一个标签运行:
document.title = "my app | tab title";
我使用一个单独的头,并包括它使用php,在头我使用:
<?php
if (!isset($title)){
$title = "Your Title";
}
else {
$title = $title;
}
?>
<head>
<title><?php echo $title; ?></title>
然后在每一页我使用:
<?php
$title = "Your Title - Page";
include( "./header.php" );
?>
我想从未来向你问好:)最近发生的事情:
谷歌现在运行javascript,是在你的网站1 人们现在使用React.js、Ember和Angular在页面上运行复杂的javascript任务,而且它仍然被Google1索引 你可以使用html5历史api (pushState, react-router, ember, angular),它允许你做一些事情,比如为你想打开的每个选项卡设置单独的url,谷歌将索引that1
所以为了回答你的问题,你可以安全地从javascript中更改标题和其他元标签(如果你想支持非谷歌搜索引擎,你也可以添加一些像https://prerender.io这样的东西),只是让它们作为单独的url访问(否则谷歌如何知道这些是要在搜索结果中显示的不同页面?)更改SEO相关标签(在用户通过点击更改页面后)很简单:
if (document.title != newTitle) {
document.title = newTitle;
}
$('meta[name="description"]').attr("content", newDescription);
只要确保css和javascript没有在robots.txt中被阻止,你可以在谷歌网站管理员工具中使用Fetch作为谷歌服务。
1: http://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157