搜索引擎可以索引 JavaScript 生成的网页吗?

2024-01-20

Google 等搜索引擎可以索引 JavaScript 生成的网页吗?当您右键单击并选择在由 JavaScript(例如使用 GWT)生成的页面中查看源代码时,您看不到动态生成的 HTML。我想,如果搜索引擎也看不到生成的 HTML,那么就没有太多可索引的内容,对吧?


您的怀疑是正确的 - 不能依赖 JS 生成的内容对搜索机器人可见。关闭 JS 的任何人也看不到它 - 而且,上次我向我正在工作的网站添加了一些测试(这是一个大型的主流受众网站,每月有数十万唯一访问者) ,大约 10% 的用户没有以任何形式运行 Javascript。其中包括搜索机器人、禁用 JS 的 PC 浏览器、许多手机、使用屏幕阅读器的盲人……等等。

这就是为什么通过 JS 生成的内容(没有后备选项)是一个非常糟糕的主意。

回归本源。首先,使用以下命令创建您的网站基本 (X)HTML,基于类似 REST 的原则(至少在要求状态更改的 POST 请求的范围内)。简单的语义标记,忘记 CSS 和 Javascript。

第一步是做到这一点,让整个网站(或尽可能多的网站)以这种方式为搜索机器人和类似 Lynx 的用户代理良好地工作。

然后添加一个视觉层:CSS/图形/媒体用于视觉美化,但不要显着更改原始 (X)HTML 标记;允许原始纯文本网站保持完整并正常运行。保持标记干净!

第三是添加一个行为层:Javascript(Ajax)。为使用支持 Ajax 的 JS 的用户/浏览器提供更快、更流畅、更好的体验……但仅限于这些用户。没有 Javascript 的用户仍然受到欢迎;搜索机器人、视障人士、许多手机等也是如此。

这就是所谓的渐进增强在网页设计界。这样做,您的网站就会以某种合理的形式为每个人服务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搜索引擎可以索引 JavaScript 生成的网页吗? 的相关文章

随机推荐

  • 缩短 Zsh 中的提示

    我在让 zsh 缩短提示符时遇到了很多麻烦 我目前正在使用带有 agnoster 主题和 oh my zsh 包管理器的 zsh 目前 我的提示在工作期间变得非常长 通常约为 110 个字符 占据了我的终端的整个长度 这在美观上不太令人愉悦
  • Slick:有没有办法用正则表达式创建 WHERE 子句?

    我寻找一个相当于 select from users where last name w son 例如 当数据库中有以下名称时 first name last name Tore Isakson John Smith Solveig Lar
  • 在 C API 中使用可变参数来设置键值对是个好主意吗?

    我正在编写一个 API 它可以更新结构中的许多不同字段 我可以通过使更新函数可变参数来帮助添加未来的字段 update FIELD NAME1 10 FIELD NAME2 20 然后稍后添加FIELD NAME3无需更改任何现有调用 up
  • 我必须在标头中包含respond.js 吗?

    使用 Bootstrap3 构建一个网站 我希望它可以在 IE 上运行 当我在页面底部包含 respond js 时 它似乎有效 但我想在使用它之前确保这实际上是正确的 我的问题很简单 我在哪里包含 JS 文件 特别是 respond js
  • 如何使用 XSLT 输出重复元素?

    我有 xml 看起来像这样
  • getApplicationContext() 和 getActivity() 之间的区别

    getApplicationContext 和 getActivity 之间有什么区别this在安卓中 之间有很多区别 View getContext http developer android com reference android
  • 具有 JDBC 和 JNDI REALM 身份验证的旧应用程序

    我的应用程序当前依赖于 JDBC 领域身份验证 最近的需求迫使我们也考虑使用 LDAP 身份验证 我们正在考虑使用 Active Directory 进行身份验证和授权 角色 作为独立测试 我能够使用 AD 验证我的应用程序 但这是我未来的
  • 使用 system() 命令运行多个 R 脚本

    我在 Windows 7 中运行 RStudio 我编写了一个主脚本 该脚本生成 57 个新的 R 脚本 每个脚本都包含根据两个参数运行函数的命令 vector1 lt c 1 19 vector2 lt c 1 3 首先 主脚本使用两个
  • Javascript:更改二维数组中的单元格值

    所以 我有一个二维数组 我这样声明 var grille new Array 60 fill new Array 30 fill false 我希望能够更改数组中一个单元格的值 但是当我这样做时 grille x y new value 我
  • UILabel 子类使用自定义颜色初始化

    我的目标是设定textColor我的习惯UILabel我的视图控制器中的子类 我有一个UILabel子类名为CircleLabel 以下是它的基础知识 class CircleLabel UILabel required init code
  • 由于缺少文件,Visual Studio 2010 构建时出错

    我到处搜索 似乎找不到任何有同样问题的人 尽管我确信人们过去也犯过同样的错误 我不小心删除了调试和发布文件夹的内容 现在我收到文件未找到错误 作为背景 它是 C 中的 Windows 窗体应用程序 我正在运行 Visual Studio 1
  • WPF 在代码后面添加不带键的样式资源

    我正在从 WPF 应用程序的后台代码生成一个 xaml 并希望将样式添加到生成的 xaml 我使用资源字典来存储我的应用程序将访问的样式信息 并根据资源字典中的键将其应用于生成的 xaml 中的相应元素 现在我想将特定样式应用于生成的 xa
  • 运行 AWS CLI 命令时出现“configparser.DuplicateOptionError”

    在mac终端中执行以下命令时出现错误 aws configure 我在网上找不到任何有用的东西 而且我是 mac 和 aws 的新手 有人可以帮我解决吗 其他命令也会发生同样的事情 例如aws version命令如which aws会正常工
  • 房间迁移更改表不添加新列并一次又一次地调用迁移

    所以基本上我正在使用空间并尝试添加从数据库版本 1 到 2 的迁移 但我的 alter 命令不起作用 我当前的实现如下 void init db Room databaseBuilder Global getInstance AppData
  • javascript 语法:函数调用和使用括号

    为什么这有效 但不是这个
  • 将 int 转换为 char 而不使用 ASCII [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我如何将小于 10 的 int 转换为 char 例如 5 gt 5 不使用 ASCII 表将 int 转换为 char 由于数字在标准字符
  • php exec 输出被修剪

    我在 php 中使用 exec 又遇到了另一个麻烦我的操作系统是 suse linux 我使用的是 php 5 1 2 不知何故 当我使用 exec 时 我的输出被修剪 in linux gt ps ef grep java root 35
  • Azure AD - 始终需要范围,因此需要一个默认范围

    我已经为一家企业实施了 Azure AD 好吧 还没有完全完成 目的是只有企业中的人员可以使用它 他们必须位于企业的 Active Directory 中 并且存在仅分配给某些用户的特殊目标角色 范围 REST 端点用这些范围进行注释 在
  • 如何选择与行跨度对应的行?

    我有一个动态生成的表 我试图更改其中某些行的背景颜色 有时有些行具有行跨度 我无法弄清楚如何获取与一个 行 相对应的所有行 我用谷歌搜索了我的大脑 发现这个 jsfiddle 非常接近我需要的 在逻辑意义上 http jsfiddle ne
  • 搜索引擎可以索引 JavaScript 生成的网页吗?

    Google 等搜索引擎可以索引 JavaScript 生成的网页吗 当您右键单击并选择在由 JavaScript 例如使用 GWT 生成的页面中查看源代码时 您看不到动态生成的 HTML 我想 如果搜索引擎也看不到生成的 HTML 那么就