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

How to pass javascript based capability tests to server, and have server send markup based on test results

本文关键字:服务器 测试结果 javascript 功能测试      更新时间:2023-09-26

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

与modernizr server - https://github.com/jamesgpearce/modernizr-server

原理相同

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

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

谢谢!

modernizr-server使用您描述的方法,它设置一个cookie,然后重新加载页面。(实际上,它不做任何内容输出,初始页面加载的唯一内容就是JavaScript本身。有出口;语句,如果它正在查找的cookie没有找到。)任何关闭JavaScript的人都可能会看到一个空白页面。

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

  1. 设置cookie并重新加载。
  2. 设置cookie,然后使用AJAX获取初始页面的内容。(如你所述)
  3. 设置一个期望的基线支持(也许,期望不支持JavaScript),并在初始页面加载时提供它。如果他们打开了JavaScript,你可以重新加载,或者使用AJAX告诉你的服务器它支持什么,然后重新加载初始页面的块(或全部)。
  4. 为搜索引擎提供无javascript内容,为其他所有人使用选项1或2。

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