Javascript 如何动态更改网页';谁的头衔?
我有一个网页,它实现了一组选项卡,每个选项卡显示不同的内容。选项卡单击不会刷新页面,而是在客户端隐藏/取消隐藏内容 现在需要根据页面上选择的选项卡更改页面标题(出于SEO原因)。这可能吗?有人能提出一个解决方案,通过javascript动态更改页面标题而不重新加载页面吗?代码是Javascript 如何动态更改网页';谁的头衔?,javascript,html,Javascript,Html,我有一个网页,它实现了一组选项卡,每个选项卡显示不同的内容。选项卡单击不会刷新页面,而是在客户端隐藏/取消隐藏内容 现在需要根据页面上选择的选项卡更改页面标题(出于SEO原因)。这可能吗?有人能提出一个解决方案,通过javascript动态更改页面标题而不重新加载页面吗?代码是 document.title='test'使用document.title 请参阅,以获取基本教程。我看不出通过Javascript更改页面标题将如何帮助SEO。大多数(或全部)搜索机器人不运行Javascript,只读
document.title='test'
使用document.title
请参阅,以获取基本教程。我看不出通过Javascript更改页面标题将如何帮助SEO。大多数(或全部)搜索机器人不运行Javascript,只读取最初加载的标题(即标记)
如果你想帮助SEO,那么你需要在后端更改页面标题并提供不同版本的页面 更新:根据 大多数网络爬虫将索引更新的标题。下面的答案已经过时,但代码仍然适用 您可以执行如下操作,
document.title=“这是新的
页面标题。“代码>,但这将完全违背搜索引擎优化的目的。最
爬虫程序一开始不会支持javascript,所以
他们将以元素中的任何内容作为页面标题
如果你想让它与大多数重要的爬虫兼容,
您需要实际更改标题标签本身,这
可能需要重新加载页面(PHP等)。你不去吗
如果您想在中更改页面标题,则可以绕过此问题
爬虫可以看到的一种方式
使用document.title是在JavaScript中实现它的方法,但是这对SEO有什么帮助呢?机器人通常不会在遍历页面时执行javascript代码。但是为了获得合适的搜索引擎优化
当页面更改时,您需要重新加载页面,以便搜索引擎可以看到不同的标题等
因此,请确保先重新加载页面,然后添加文档。标题更改您必须使用新标题重新服务页面,以便任何爬虫都能注意到更改。通过javascript这样做只会使人类读者受益,爬虫程序不会执行该代码。想到的一种方法可能有助于SEO,并且仍然保持选项卡页面的原样,那就是使用与每个选项卡对应的命名锚,如:
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";
有很多方法可以更改标题,主要的两种方法如下:
可疑的方法
在HTML中放置一个标题标记(例如,Hello
),然后在javascript中:
let title_el = document.querySelector("title");
if(title_el)
title_el.innerHTML = "World";
显然正确的方法
最简单的方法是实际使用文档对象模型(DOM)提供的方法
前一种方法通常是更改文档主体中的标记所要做的。使用这种方法来修改元数据标记,比如在头部找到的那些标记(比如title
),充其量是有问题的做法,不是惯用的,一开始不是很好的风格,甚至可能不可移植。不过,您可以肯定的一点是,如果其他开发人员在他们维护的代码中看到title.innerHTML=…
,他们会感到恼火
你想要的是后一种方法。正如名称所示,此属性专门用于更改标题
另外请注意,如果您使用XUL,您可能希望在尝试设置或获取标题之前检查文档是否已加载,否则您将调用未定义行为
(这里是龙),这本身就是一个可怕的概念。这可能通过JavaScript实现,也可能不通过JavaScript实现,因为DOM上的文档不一定属于JavaScript。但XUL完全是另一头野兽,所以我就跑题了
说到.innerHTML
要记住的一些好建议是,使用.innerHTML
通常是草率的。改用
虽然有两种情况我仍然认为.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);
});
我只想在这里添加一点:如果您通过AJAX更新数据库,那么通过JavaScript更改标题实际上很有用,这样您就可以在不刷新页面的情况下更改标题。标题实际上是通过服务器端脚本语言更改的,但通过JavaScript更改标题只是一个可用性和UI问题,可以让用户体验更愉快、更流畅
现在,如果您只是为了好玩而通过JavaScript更改标题,那么您不应该这样做 最简单的方法是从index.html中删除
标记,并包括
<head>
<title> Website - The page </title></head>
网站-网页
在网页的每一页上。爬行器将找到这一点,并显示在搜索结果中:)由于搜索引擎忽略了大多数javascript,您需要这样做,以便搜索引擎可以在不使用Ajax的情况下使用选项卡进行爬行。使每个选项卡成为一个带有href的链接,该href加载选中该选项卡的整个页面。然后页面可以在标签中包含该标题
onclick事件处理程序仍然可以通过ajaxforhum加载页面
<head>
<title> Website - The page </title></head>
document.title = 'Put the new title here';
document.title = "Google will run this JS and show the title in the search results!";
if (document.title != newTitle) {
document.title = newTitle;
}
$('meta[name="description"]').attr("content", newDescription);
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'));
<?php
if (!isset($title)){
$title = "Your Title";
}
else {
$title = $title;
}
?>
<head>
<title><?php echo $title; ?></title>
<?php
$title = "Your Title - Page";
include( "./header.php" );
?>