我想基于用户交互创建一个完全基于套接字和ajax的网站。意味着关闭javascript的用户甚至无法以任何方式向网站发送更新,甚至无法注册。他们只能读取数据。
那么对此的一般意见是什么?我是否应该花时间让网站足够灵活,以便能够处理一小部分关闭脚本的人?
这也是我希望能够在更多网站中重复使用的框架。
答案 0 :(得分:9)
您做出的每项决定都会影响部分用户。 理想的屏幕尺寸,开启或关闭cookie,JavaScript等都会产生影响。
但这并不新鲜。如果您为iOS编写应用程序,则无法在Android上运行。如果您为xBox编写游戏,它不会在PlayStation上运行。
我的个人意见 - 如果人们在他们的浏览器中完全关闭了JavaScript(并且统计数据显示这是一个相当低的百分比),那么他们将获得较差的网络体验。他们将无法正常使用您的网站。 IMO没关系。你已经做出了选择,他们也是如此。您希望您的用户获得良好的体验,因此您可以专注于此。
让我们说这类似于Windows和Mac软件。 Windows占据了95%的台式机市场,Mac占据了5%。 (我正在编制数字 - 确切的统计数据并不重要)。所以你自然会先为PC编写你的程序。之后,你可以花时间重写Mac,或改进PC。大多数人选择改进PC。
我现在在营地,我不太关心少数民族。我不再在IE6中测试了。我需要启用JavaScript。我需要支持至少一个会话cookie。如果你想留在IE6上 - 去吧,但那是你的决定所以如果你不能使用这个网站就不要哭我。我不支持10岁的手机,为什么要支持10年前的浏览器呢?我理解一些人关闭JavaScript的逻辑 - 但我不会减少其他98%的人只是为了容纳你的经验。我没有时间重写所有内容。
答案 1 :(得分:1)
由于我们对您的网站,您的商业模式,您的客户或小“小”一无所知,因此我们无法就您的网站是否值得向您提供建议。它肯定会导致很多工作,并且可能会在用户体验方面出现一些不一致。
在两者之间尽可能多地重用的一件事就是使用严格的MVC模型。模型层可以获取所要求的每个数据,而前面的外观层可以为两种请求提供服务。
假设您的网站有一个会员资料管理页面。该模型有一个Member对象,其中包含设置/获取标识符,地址,电话号码,电子邮件地址等的方法。
场景A,JS已启用:
1)“profile admin”菜单选项中的链接在后端调用getProfile()。通过调用getIdentifiers(),getAddress(),getPhone()等来构建要发回的HTML / JavaScript,然后将其发送回客户端。
2)用户更改其个人资料页面上的电话号码。由于启用了JS,因此将对setPhone()进行AJAX调用,当结果返回时,只更新页面的那一部分。
场景B,JS被禁用: 1)“profile admin”菜单选项中的链接在后端调用getProfile()。会话数据将有一个布尔值,指出JS已被禁用,因此呈现的页面具有表单和提交按钮。 2)用户向setProfile()提交数据,包含所有字段,是否已更改。发回的是通过getProfile()重新呈现带有新信息的页面。
Also see this post关于在关闭JS时显示备用内容。
所以它是可能的。然而,正如布鲁斯所说,除非你真的需要那些人口,否则他们会得到他们应得的。我个人不会经历这种程度的努力,比我试图考虑可能尝试通过14.4K调制解调器访问该网站的用户。所有这些关闭JS的工具都允许您指定例外网站。