php - 如何将基于 javascript 的能力测试传递给服务器,并让服务器根据测试结果发送标记

标签 php javascript ajax seo

我正在考虑使用 JS 进行功能/特性测试并将结果发送回服务器,以便它知道它可以/不能发送给客户端的内容。

这与 modernizr 服务器的想法相同 - https://github.com/jamesgpearce/modernizr-server

我遇到的问题是在初始页面加载时将 JavaScript 结果传回服务器。我不确定有哪些选项可用,但我知道选项不多。我已经测试过设置 cookie 并立即重新加载页面,以便 PHP 可以读取结果,但从 SEO 的 Angular 来看我很担心。似乎立即重新加载页面会产生一些不利影响,如果刷新是在具有表单的页面上,我也特别担心。一旦设置了 cookie 并且用户转到另一个页面,它就可以正常工作,它只是根据功能测试确定如何在初始页面加载时提供内容。我有一些不同的想法,比如只使用 JS 在初始页面加载时提供标记,并让 PHP 在后续页面加载时读取 cookie,但我不确定什么可能是最好的解决方案。

我只是不知道还有哪些其他选择。我不知道我应该朝哪个方向看,或者是否有任何方向。我不知道 AJAX 是否能够帮助解决这个问题。我觉得我已经很接近了,但我想如果我问社区,也许有人会有一个好的解决方案。

谢谢!

最佳答案

modernizr-server 使用您描述的方法,它设置一个 cookie,然后重新加载页面。 (实际上,它不执行任何内容输出,初始页面加载时唯一的事情是 JavaScript 本身。有一个退出;如果找不到它正在寻找的 cookie 的声明。)任何关闭 JavaScript 的人可能会期望一个空白页。

看起来您有几个选项(这不是排他性的,还有更多。):

  1. 设置 cookie,然后重新加载。
  2. 设置一个 cookie,然后使用 AJAX 获取初始页面的内容。 (正如你提到的)
  3. 设置预期的支持基线(也许不期望任何 JavaScript 支持),并在您的初始页面加载时提供该基线。如果他们启用了 JavaScript,您可以重新加载或使用 AJAX 告诉您的服务器它支持什么,然后重新加载初始页面的 block (或全部)。
  4. 仅向搜索引擎提供非 javascript 内容,对其他所有人使用选项 1 或 2。

这里的选项三是工作强度最大的,但可能是最具包容性的选项。 (编辑:3 和 4 将确保搜索引擎看到您的内容)

关于php - 如何将基于 javascript 的能力测试传递给服务器,并让服务器根据测试结果发送标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7476017/

相关文章:

php - 通过字段名称以编程方式获取 ACF 字段键

javascript - Jquery ui Accordion - 如何在右侧添加图标?

javascript - 从 jQuery 选择器 .html() 中删除 Ember.js 脚本标签

javascript - 如何使用CSS将三个元素并排放置并居中

javascript - 一旦第一个函数在第一个函数内调用了第二个函数,我将如何将变量的引用传递给第二个函数?

javascript - Watir 不触发 Jquery 事件处理程序

javascript - 单击按钮后 PHP 变量不更新

php - 通过 PHP 将 CSV 文件导入 SQLite 数据库

php - [PHP]编辑记录,更新mysql查询

ajax - 通知系统 - Socket.io 还是 Ajax?