Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理可能关闭JavaScript的浏览器?_Javascript_Ajax - Fatal编程技术网

如何处理可能关闭JavaScript的浏览器?

如何处理可能关闭JavaScript的浏览器?,javascript,ajax,Javascript,Ajax,假设我正在开发一个严重依赖JavaScript的web应用程序,它使用AJAX处理所有POST命令来存储数据,等等 如何处理用户可能关闭JavaScript的情况?要求用户的浏览器打开是否不合理?对于这些情况有什么最佳实践吗?使用标记让用户知道,没有Javascript他们无法使用网站。这不是最佳实践,但在这一点上很常见,没有它的大多数用户都会有被排除在雨中的体验 也就是说,如果你能提供一个不需要Javascript的网站版本(想想gmail的降级版本),那显然是一个更好的解决方案。没有它,你将

假设我正在开发一个严重依赖JavaScript的web应用程序,它使用AJAX处理所有POST命令来存储数据,等等

如何处理用户可能关闭JavaScript的情况?要求用户的浏览器打开是否不合理?对于这些情况有什么最佳实践吗?

使用
标记让用户知道,没有Javascript他们无法使用网站。这不是最佳实践,但在这一点上很常见,没有它的大多数用户都会有被排除在雨中的体验


也就是说,如果你能提供一个不需要Javascript的网站版本(想想gmail的降级版本),那显然是一个更好的解决方案。没有它,你将失去手机冲浪者,还有盲人和其他有无障碍需求的人。还有那些太固执而不愿使用JS的人,但我们并不关心他们。

我个人认为,期望人们打开Javascript并不是什么大要求

如果您不想支持非javascript,那么它非常简单:

<noscript>
    This site works better with Javascript turned on.
</noscript>

打开Javascript后,该网站工作得更好。
接近顶部

如果您仍然希望支持没有Javascript的用户,那么可以对Javascript进行结构化,以便在JS未加载的情况下,所有表单仍然提交到正确的位置

例如,如果您有一个表单:

<form action="" method="POST">
    <input type="text" name="name">
    <input type="submit">
</form>

不要以使用Javascript的想法构建实际表单。相反,只需挂入页面即可增强体验


定期提交上述表格。使用Javascript,您可以通过AJAX而不是新的页面加载来实现提交。

这里的关键是“优雅降级”的概念。尽管没有javascript支持,但您希望提供尽可能最好的体验。对于AJAX,这通常意味着进行整页请求,而不是我们习惯的可爱的动态请求;同样,POST必须通过HTML提交并加载新页面

这显然不是功能丰富的,很好地展示它可能是一个挑战,但如果您正在寻找最佳实践,这就是目标。通过noscript标签告诉用户他们禁用了javascript也是值得的(有些人可能是意外地合法地这么做了),但是由于缺少javascript而关闭整个站点是不友好的行为


任何值得创建的站点都值得访问。

取决于站点;例如,像谷歌地图这样的东西,如果没有Javascript显然是行不通的。因此,简单地显示一个noscript元素,礼貌地提到他们将需要它来查看站点是很好的

可能最好避免任何“你需要一个新的浏览器”的信息;由于许多原因,他们可能无法安装,或者可能只是选择安装NoScript或类似的软件。根据Mozilla的说法,NoScript已经有了近十年的历史;显然,其中很大一部分将是同一个人的重复下载,但很可能有1000万人安装了它——这不是微不足道的


我想,“最佳实践”应该是,如果可能的话,有一个优雅的降级版本。由您决定这是否值得或是否适合您的站点。

您可以通过
操作
属性发送表单数据。启用JavaScript时,使用
removeAttribute
setAttribute
删除属性。这样,当非JS用户使用浏览器时,他们仍然可以提交表单。但是,在后端代码中,还必须支持非JS,这比使用
无JS
(Mordenizr)要好得多

当然,这样做仍然有一些缺点,例如每次需要重新加载整个页面,这会消耗大量的时间和内存


到目前为止,这是我能想到的最好的解决方案。希望有帮助。

看看这个:+1:noscript标签是必须的。但是如果可能的话,如果可能的话,在没有脚本的情况下给他们一个有用的体验。注意:自从回答之后,移动用户现在有了完全有用的浏览器,而Magento有了一个移动版本。我正在考虑处理双重提交(如果没有JS,则定期发布,如果有ajax)。我很高兴看到这不仅仅是一个混乱。也许我会先用noscript标记实现ajax,然后再添加一个无JS版本。如果您先解决如何在没有JS的情况下实现这一点,您将获得更大的成功,尽管初始开发需要更长的时间。如果不是的话,你可能需要在没有AJAX的情况下到处攻击才能让它正常工作。我可以看到这一点。幸运的是,我们正在使用Scrum流程进行为期3周的sprint,因此现在继续使用Ajax,然后在下一个sprint中完成转换5个表单的任务并不多。要使您站点上的每个AJAXed表单都能按常规提交,这需要大量的工作。我确信这些理论上的非JS用户大多是虚构的,每天都不那么真实。只有最老的手机不支持JS。现在是时候断绝关系了。数以百万计的虚荣网站只能在一两个最新的浏览器上正常运行——很可能作者自己会占据大部分页面浏览量,所以只使用脚本可能对他们来说是合适的。互联网上有值得观看的内容的网站添加脚本增强功能是为了用户的使用和方便,而不是为了脚本粘贴的方便。@beamrider它当然不会总是符合时间表,但我认为这仍然是需要努力的。可访问性是现代web开发的一个重要组成部分,仅仅因为不方便而忽略它对屏幕阅读器等只支持非常有限的JS的设备是不公平的。