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

时间:2010-06-04 02:22:08

标签: javascript ajax

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

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

5 个答案:

答案 0 :(得分:6)

使用<noscript>标记让用户知道在没有Javascript的情况下他们无法使用该网站。这不是最好的做法,但在这一点上很常见,没有它的大多数用户都会在雨中被遗忘。

也就是说,如果你能提供一个不需要Javascript的网站版本(想想降级版的gmail),那显然是一个很好的解决方案。没有它,你将失去移动冲浪者,盲人和其他有可访问性需求的人。那些过于顽固不能使用JS的人,但我们并不关心他们。

答案 1 :(得分:4)

我个人认为期望人们启用Javascript并不是一个很大的要求。

如果您不想支持非JavaScript,它就像:

一样简单
<noscript>
    This site works better with Javascript turned on.
</noscript>

靠近顶部。

如果你仍然想要支持没有Javascript的用户,你可以构建你的Javascript,这样如果没有加载JS,所有表单仍然会提交到正确的位置。

例如,如果你有一个表格:

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

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

通常情况下,上述表格将自行提交。使用Javascript,您可以通过AJAX而不是新的页面加载来挂钩并使提交发生。

答案 2 :(得分:2)

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

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

任何值得制作的网站都值得一提。

答案 3 :(得分:1)

取决于网站;例如,谷歌地图之类的东西显然不会没有Javascript。所以简单地显示一个noscript元素礼貌地提到他们将需要它来查看该网站是好的。

可能最好避免任何光顾“你需要获得新浏览器”的消息;由于多种原因,他们可能无法选择安装NoScript或类似产品。根据Mozilla的说法,NoScript几乎70 million downloads;很明显,其中很大一部分将是同一个人的重复下载,但安装它的人很容易就会有1000万人 - 这并不是无关紧要的。

如果可能的话,我认为“最佳做法”是优雅降级版本。由你来决定是否值得努力,或者它是否适合你的网站。

答案 4 :(得分:0)

您可以通过action属性发送表单数据。启用JavaScript后,请使用removeAttributesetAttribute删除该属性。这样,当非JS用户使用浏览器时,他们仍然可以提交表单。但是,在后端代码中,您还必须支持非JS,这比使用<noscript>no-js(Mordenizr)更好。

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

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