是否值得为禁用javascript的用户编写不同的功能?

时间:2008-12-03 15:42:56

标签: javascript

我目前正在构建一个项目,我想使用一些简单的javascript - 我知道有些人禁用它来阻止XSS和其他东西。我应该......

a)使用简单的javascript,禁用那些禁用的用户

b)不要使用简单的javascript,启用它的用户必须再点击一下

c)编写启用了javascript和禁用javascript功能的代码

我不确定网络总是在变化,你推荐什么?

12 个答案:

答案 0 :(得分:24)

优雅地降级 - 确保网站在没有JavaScript的情况下工作,然后为启用了JavaScript的用户添加铃声和口哨声。

答案 1 :(得分:16)

其他人都做出了很好的评论,但还有一些其他的考虑因素。

有时javascript将托管在不同的域上,并且容易超时。

有时,该网域可能会变得无法访问,而您的网站仍然可以访问。在这种情况下让您的网站完全堆叠自己并不好。

出于这个原因,应该避免使用谷歌跟踪器中存在的“阻止”脚本(即:文档内联文档),或者至少应该尽可能地在页面中使用,以便页面呈现是否域名是否超时请求。

如果您碰巧是通过故意或偶然的方式从破坏/恶意服务器提供JS,只需通过提供一个脚本来提供页面呈现,只需将其命名为“sleep(forever)”标题。

有些人使用NoScript

与上述问题类似,有时客户端环境可能会阻止某些脚本源,无论是用户选择还是其他原因(即:浏览器安全性满意,奇怪的防病毒/反恶意软件应用程序)。最受欢迎和可控制的实例是NoScript,我自己也偏执地阻止了一些流行的跟踪/广告服务(一些代理服务器也会这样做)。

但是,如果网站设计不合理,加载一个脚本失败仍会执行依赖于该脚本存在的代码,这会导致错误并阻止一切正常运行。

我的建议是:

  1. 使用Firebug
  2. 使用NoScript并阻止所有内容 - >请参阅网站仍然有效
  3. 启用您无法做到的任何内容的核心网站脚本 - >看到网站仍然有效,萤火虫没有抱怨。
  4. 启用第三方内容 - >看到网站仍然有效,萤火虫没有抱怨。
  5. 还有许多其他并发症可以突然出现,但满足上述2应解决其中大多数问题。只是假设,无论出于何种原因,构成页面的一个或多个资源都可以自发地消失(它们一直都在消失),并且您希望页面尽可能友好地“存活”这个问题。对于可能持续存在的问题< 10秒,它不是那么糟糕,刷新页面和它固定,但如果它可能发生的问题,并且severley一次阻碍可用性一小时或更长时间。

    从本质上讲,不要考虑“哦,没有javascript的边缘案例用户”,尝试更多地思考“它真的很容易出错”,并且 ALL < / em>我们的用户破解了javascript。哎哟!让我们试试吧,这样我们就不会真的软管自己当发生这种情况时“

    (我已经看到IE更新推出并为整个浏览器添加软件javascript,直到编写脚本的人找到解决方法。失去所有IE客户并不是一件好事)

    :set sarcasm

    :set ignoreSpelling

    :set iq=76

    别担心,它只有5%的NichéMarket

    没人关心瞄准Niché市场吗?所有那些有趣的螺旋桨头都在他们令人讨厌的愚蠢的linoox cpus中运行lynx,把所有的时间花在intarwebs冲浪上,因为他们没有更好的生活或金钱?疯狂的安全偏执狂书呆子禁用javascript左右因为他们不喜欢它?

    现在没有人想要他们作为您的主要客户吗? Niché市场。 Pfft。谁在乎!

    :set nosarcasm

答案 2 :(得分:13)

考虑您的受众

“优雅地降级”通常是最好的答案。但现在很多网站都依赖JS - 特别是AJAX。

考虑您的受众群体。如果您的网站针对的是非常精通技术的人,那么他们没有javascript的可能性很小,如果有必要,您可以通知他们将其打开。

如果您的受众群体可能使用移动设备访问您的网站,请不要认为他们拥有JavaScript,甚至不认为他们正确支持CSS。目的是优雅地降级到裸HTML。

答案 3 :(得分:12)

我从我的问题中学到了很多东西:What's With Those Do-Not-Use Javascript People

使用Ajax和Web 2.0。这是网络的发展方式,非常棒。 Stackoverflow难道不是很好吗?关闭你的Javascript并不是很好。

准备好您的网站后,在让它上线之前,请关闭Javascript进行测试,然后添加您认为需要的任何内容,以使您的网站显示并对其起作用。你只需要添加你认为必不可少的东西。

请记住,除了使用屏幕阅读器在视觉上受到影响的人之外,其他人都选择关闭javascript。如果他们想要使用您拥有的所有功能,他们还可以选择信任您的网站并为您的网站启用javascript。这真的是他们的选择。

答案 4 :(得分:8)

正如其他人所说,它应该“优雅地降级”。

在其他作品中,它必须在没有Javascript(句点)的情况下工作。它不一定运作良好。那些已经禁用Javascript的人知道导致并接受它们的限制。但是如果你想卖给他们一些东西,重要的是他们仍然可以买它。

在我正在设计的网站上,有一个基于javascript的弹出菜单。关闭Javascript后,所有弹出按钮都会打开。它看起来不像JS那样酷,但它仍然可以用来浏览网站。

答案 5 :(得分:5)

这取决于您需要多长时间来开发和维护这两种解决方案,以及非JavaScript用户对您的价值。

我的电子商务网站在很大程度上依赖于javascript,在一年半的时间里,我没有收到任何投诉。 事实上,自从我开始以来,我认为我没有看到任何日志中禁用javascript的单个访问者。 这并不意味着他们不在那里。它只是意味着(a)它们是一个很小的百分比,(b)它们对我卖的东西不感兴趣,或者(c)上述两种情况。

答案 6 :(得分:3)

对您的网站进行编码,并支持最基本的浏览器类型。然后,即使他们没有启用Flash,Javascript和Java等所有的功能,也可以让更多的人毫无挫折地使用您的网站。 Netscape Navigator 4说,继续支持古代浏览器可能不太实际,因为可以合理地期望用户保持他们的计算机是最新的。但是,Javascript,Flash和Java等功能可能会成为旧版或现代浏览器中的安全漏洞,并且会让您感到烦恼。

我的父母都没有启用Javascript或Flash,因为他们有太多的经验,他们放慢了已经很慢的连接速度,崩溃他们的浏览器,或者对使用它的网站更加烦恼(这很多)他们...)比一个有用的功能。例如,如果您的表单需要进行AJAX调用,并且在Javascript被禁用时您无法实际按下提交按钮以发送表单,那么这只是糟糕的设计。

我的母亲最近非常沮丧地发现她现在无法点击eBay结果页面,因为每个人都需要Javascript。她能看到下一页结果的唯一方法是打开Javascript或每页显示更多结果。现在,为什么页面链接需要Javascript,而“每页结果”链接只是普通链接?他们应该所有是普通的旧HTML链接。也许Javascript可以用来为导航添加一些奇怪的爆炸,但是用户不应该因为禁用Javascript而使用错误的界面。这在eBay上是愚蠢的,它会给用户带来不必要的麻烦。

答案 7 :(得分:2)

我是那些使用'无脚本'的人之一。而且我可以告诉你,那些使用javascript并且没有启用它的工作的网站非常烦人,stackOverflow ...不,我们不希望它非常花哨,如果我upvote加载一个新页面说“谢谢你。“

我们希望能够使用具有合理限制的网站,不要显示一个说必须启用JS的页面,即使网站没有它也是垃圾。是的,如果您的网站说服我们留下来,我们将启用。在网站上不常用的功能也可能需要javascript。

请注意,如果没有其他任何对Bots有好处的话,你的网站也应该看起来没有JS或CSS。

正如其他人已经指出一些手机没有JS,这是改变,但另一个合理的非JS的理由。我建议使用非JS代码并在前者工作之后添加JS,JS有很好的方法可以使用非JS布局。

答案 8 :(得分:2)

在我的实现中帮助我将其视为“渐进增强”而不是优雅降级。降级通常会导致您在实施后弄清楚如何使其无效,而不是使用js进行基线和增强。

答案 9 :(得分:1)

关闭JavaScript时,至少必须测试您的网站功能

正如orip所说,优雅地退化是非常重要的。应该至关重要,当您的JavaScript被禁用时,您的网页看起来都很漂亮并且正常运行。

答案 10 :(得分:1)

对于主要用于传递信息的标准网站,请始终优雅地降级。

对于网络应用程序:

在为标准互联网受众构建网络应用程序时,我会记住以下三个事实:

  1. 95%-97%的潜在用户将启用JavaScript。
  2. 有时,已建立的用户需要在JavaScript不可用时访问功能。
  3. 3%-5%的潜在用户将故意禁用JavaScript。
  4. 鉴于事实之一,如果您认为构建依赖JavaScript的Web应用程序将提供卓越的用户体验,那么无论如何都要这样做。这样做可能会帮助您积累用户。

    但是,鉴于事实二,您应该始终提供一种方法,您的用户可以通过该方式访问没有JavaScript的核心功能。您需要提供每一项功能吗?可能不是。但是用户应该能够完成他或她的工作。这可以让用户在没有JavaScript的情况下暂时发现自己感到高兴。

    鉴于事实三,我还会提供一个深度游览,试图诱使这些用户启用JavaScript

    顺便说一句,我最喜欢的一个Web应用程序Remember The Milk遵循这种方法。此外,没有JavaScript,Google's Calendar application无法使用。因此,依赖JavaScript的网络应用程序正在崛起,这种趋势可能不可阻挡。在我看来,这是一件好事。

    (请注意,JavaScript使可访问性问题比现在更严重。请尽量使您的应用程序可供残障人士使用。)

答案 11 :(得分:0)

如前所述,这取决于您的目标受众。

如果我是其中的一部分,您希望确保您的网站在我的手机上正常工作(如果不是理想的话),并且它让我有理由在我用它冲浪时打开Javascript。没有人期望Javascript被禁用的全部功能,并且任何使用他们的手机访问网站的人都会遇到一些问题,但是你需要至少提供一些预告片。对于网上商店,请确保客户无论如何都能看到至少一些商品,即使他们在没有Javascript的情况下也无法购买。