人们为什么禁用JavaScript?


59

我昨天问了一个问题,我应该为JavaScript禁用而烦恼吗?。我认为共识是:是的,我应该为JavaScript Disabled开发。现在,我只想了解为什么用户禁用JS。似乎许多开发人员(我想回答问题的人都是开发人员)都禁用了JS。这是为什么。用户为什么禁用JS?为了安全?速度?要不然是啥?


9
我认为您是根据轶事证据做出假设。事实是,99.7%的用户没有关闭JS。实际上,如果他们真的要关闭JS,就不会在这里回答问题,因为如果没有JS,此站点将无法正常工作。
vartec

2
我不认识谁。
kirk.burleson,2011年

6
@ varted,@ kirk:我认识很多人,或者至少是部分人。例如,许多安全意识强的人只会在他们列入白名单的网站上允许JavaScript。而且我知道很多禁用智能手机上的JS的人通常都值得消耗掉它的电池。
haylem 2011年

1
出于安全原因,我默认情况下已禁用Chrome中的javascript,尽管我为值得的网站启用了javascript。我真的不喜欢这么多的网站如果没有JavaScript就无法运行,有越来越多的网站根本无法运行。
Czarek Tomczak

2
@HannesKarppila他们仍然可以使用跨域cookie和Web错误跟踪图像等。除非禁用javascript cookie,否则跟踪用户可以正常工作,在这种情况下,Internet几乎无法使用。
NickG

Answers:


80

人们出于以下考虑而在浏览器环境中禁用JavaScript:

  • 速度和带宽
  • 可用性和可访问性
  • 平台支援
  • 安全

速度和带宽

许多应用程序为了自己的利益而使用过多的JavaScript ...您是否需要始终通过AJAX调用刷新界面的一部分?当与宽带连接一起使用时,您的界面可能感觉不错且速度很快,但是当您不得不降级到较慢的连接速度时,首选更简化的界面。关闭JavaScript是防止无缘无故地阻止每15秒钟刷新一次世界的笨拙的Web应用程序的好方法。(是否查看过Facebook发送的数据量?这很吓人。这不仅是与JS相关的问题,而且是其中的一部分)。

我们还倾向于将越来越多的处理工作卸载到客户端,如果您使用简约(或刚刚过时)的硬件,它的速度将非常缓慢。

可用性和可访问性

并非所有用户界面都应该以动态方式表示,并且服务器生成的内容在许多情况下可能是完全可以接受的。另外,有些人根本不想要这种类型的界面。您不能取悦所有人,但有时您有机会和责任让您的所有用户满意。

最后,有些用户有残疾,您永远都不要忽视他们

我认为,最糟糕的情况是政府网站试图“现代化”其UI,以使其对公众更友好,但最终却留下了很大一部分目标受众。同样,当大学生无法访问他的课程内容时,这是一种遗憾:因为他/她是盲人并且其屏幕阅读器不支持该网站,或者因为该网站太笨重并且需要临时的现代插件,他/她没有安装在2年前在e-bay上购买的翻新笔记本电脑上,或者再次安装,因为他/她在春假期间回到了另一个国家,并且本地带宽限制无法应付笔记本电脑的有效负载。现场。

并非每个人都生活在一个完美的世界中。

平台支援

这一点与先前的2点有关,并且在当今变得不那么重要了,因为浏览器嵌入的JavaScript引擎的效率比以前提高了一个数量级,并且这种情况一直在改善。

但是,我们无法保证所有用户都有使用现代浏览器的特权(由于公司的限制-迫使我们无缘无故地支持以前的浏览器,实际上-或其他可能有效或无效的原因)。正如“ Matthieu M.”所提到的 在评论中,您需要记住,许多人仍在使用质量较低的硬件,并且并非每个人都使用最新最酷的智能手机。截止到今天,仍然有相当一部分人使用的手机带有有限支持的嵌入式浏览器。

但是,正如我提到的,这方面的情况确实有所改善。但是,如果您保持非常定期的轮询(否则您的用户将享受不错的电话费),那么您仍然需要记住有关带宽限制的先前要点。

这都是相互关联的。

安全

考虑到JavaScript在浏览器环境中运行,虽然您显然可以认为JavaScript并没有什么特别危险的事情,但这是完全不正确的。

您确实意识到,当您访问P.SE和SO时,如果您已登录任何其他网络,则会自动登录,对吗?里面有一些JS。虽然这仍然是无害的,但是它使用了一些恶意网站可以利用的一些概念。一个网站完全有可能使用JavaScript来收集有关您在浏览会话期间(或过去所做的)某些事情的信息(如果您不是每次退出浏览器或立即运行时都清除会话数据,则收集过去的信息)常见的隐身/私有浏览模式),然后将其上传到服务器。

最近的漏洞(当时在主要的浏览器中有效)包括收集收集的输入表单数据的能力(通过在恶意页面上为您试用组合并记录每种可能的起始字母组合的建议文本,从而可能告诉攻击者您是谁) (您可以在其中工作和生活的地方)或提取浏览历史记录和习惯(一种非常聪明的技巧,其操作很简单,例如将链接注入页面的DOM中以匹配链接的颜色并查看链接是否被访问。这在足够大的已知域名表上。浏览器处理JavaScript的速度越来越快,这种事情很快就可以解决。)

另外,请不要忘记,如果您的浏览器的安全模型存在缺陷,或者所访问的网站在受到XSS攻击时无法提供足够的保护,那么您可能会使用JavaScript来轻松利用远程网站上的打开会话。

JavaScript基本上是无害的……如果您将其用于受信任的网站。Gmail。Facebook(也许……甚至没有……)。谷歌读者。StackExchange。

但是,可以肯定,JavaScript不会那么糟糕,对吧?无论如何,网上还有一些更可怕的事情值得恐惧。EFFPanopticlick实验所证明的那样,就像想自己真的没那么匿名一样。使用JavaScript也可以部分完成。您甚至可以阅读他们禁用JavaScript原因,以避免浏览器出现指纹


综上所述,在某些很好的情况下,您无需费心支持JavaScript。但是,如果您提供公共服务网站,请考虑同时接受两种类型的客户。就我个人而言,我确实认为,使用以前的服务器生成的内容模型(客户端完全不使用JavaScript),许多现代的Web应用程序和网站也可以很好地工作,并且它仍然是很棒的,并且可能会减少很多消耗。

您的里程可能会因项目而异。


5
例如,Facebook是您CPU上的一大消耗。我遇到了一些编码如此差(或似乎如此)的站点,它们基本上会通过完全加载CPU(打开其他几个选项卡)冻结我的计算机。
Mark C

3
@Mark C:我认为当我键入评论时,回传多达140K的点击“发送”,说实话,这是对Web表单的稍微夸大的使用。当时可能在特定情况下,此后已修复(希望如此)。我在一个对互联网审查具有严格限制,连接质量不佳的国家住了一小段时间,这使您更欣赏优质的基于文本的网站!
haylem 2010年

8
+1表示可访问性。一半的网站对我来说完全无法使用,我既不是临时计算机用户,也不需要依赖JAWS(尚未)。
斯坦·罗杰斯

2
@斯坦·罗杰斯:这对我很重要。我有机会和大学里的一个盲人一起工作,那个人既是学生又是老师,我被他的能力震撼了。我感到非常可悲的是,大公司甚至教育机构现在都想出了肮脏的艺术网站,这些网站被这些用户拒之门外。
haylem 2010年

2
+1用于辅助功能。我在与医疗保健密切相关的网站上工作。(非常高兴,这不是新闻中的糟糕表现)尽管JS给了我们很多好处,但我为我们的优先事项感到非常难过。
Katana314 2013年

46

因为信任某人每天早上写一个有趣的漫画,并相信有人在我的电脑上运行任意图灵完备的代码是两个非常不同的事情。


3
+1为有趣的类比。尽管图灵完成的事实与执行的危险性无关
haylem 2010年

4
@haylem:图灵完备意味着在一般情况下不可能机械地证明是安全的。哎呀,要证明它不会永远运行,甚至是不可能的。对于更严格的语言,客户端浏览器可能会证明该脚本没有做任何危险的事情。
约尔格W¯¯米塔格

22
图灵完整性与可计算性有关。它没有说明是否允许解释语言打开文件,发出HTTP请求等。图灵完整性的唯一内在危险是无限循环的可能性。
dan04 2011年

@ dan04或者它试图模拟运行Windows的x86处理器,该处理器运行桌面应用程序,该应用程序被投影到您的浏览器窗口中-全部使用Javascript。图灵的完整性令人恐惧
sinni800

@ dan04,现在是cryptocoin挖掘僵尸网络(仅需要计算资源,并且能够将结果发送回去)。
user253751'4

16

我不是网络开发人员,并且对互联网的工作方式只有一个中等的了解。因此,这是用户的回答。

我的经验使我相信,无论是出于懒惰还是无知,许多网站的编码都是错误的:当我查看一个基本静态的网页(例如Facebook页面)时,我的CPU使用率将增加15%左右,并且大大增加有多个标签。最终到了要点,单击按钮或链接后我必须等待响应,我的CPU会过热并锁定。

在许多最严重的罪犯(场所)中,没有明显的变化,也没有互动。我只能假设该站点的代码不断进行过多的刷新,轮询和无休止的循环。

这驱使我安装NoScript以释放CPU使用率,并停止浏览而变得烦琐。

我使用的另一个很棒的插件是FlashBlock


Facebook不提供静态页面:它使用一种称为长轮询的技术来检查新的通知,IM消息和新闻提要项。所有这些都需要JavaScript和一定数量的CPU能力。

2
@MarkTrapp是的,这就是为什么我说“基本上是静态的”,尽管它严格来说并不是静态页面。HyperPhysics将是具有静态页面的站点的示例。我意识到可能需要执行这种操作,否则,在刷新页面之前,框永远不会消失并且您不会看到通知,但是:似乎每个站点都可以提供更多的资源,类似于教授或老师希望您将工作放在首位的情况。
Mark C 2010年

如果您认为facebook是静态页面,则不应对此问题发表评论。
Dainius

@Dainius您似乎在用英语混淆术语,并且这里没有遵循逻辑。这里所有这些CPU周期都在做什么?那就是问题所在。也许现在情况会好一些,但是其中许多网站都可以帮助您节省大量CPU时间。
Mark C

马克,您自称webdev,并问静态与动态页面与cpu周期有什么关系?还是您真的认为“查看基本静态的网页,例如Facebook页面”是正确的?
Dainius

10

我出于速度原因禁用JS。不使用JavaScript的TechCrunch需花费几秒钟的时间来加载已准备好的缓存。使用JavaScript大约需要20秒,如果不准备缓存,则需要更多时间。

JavaScript使得很多网站变得肿,特别是图像画廊和商业网站。删除此选项可以在大多数情况下为您带来更好的浏览体验。


8

对我而言,这一切都与安全有关。我使用noscript允许某些网站运行javascript,而不允许大多数。

最后,您真的不知道危险在哪里(诺贝尔网站受techspot.com感染)。许多零日漏洞(和其他漏洞)都使用javascipt。封闭这条进攻路线似乎是朝正确方向迈出的一步。


1
您需要用括号括起来才能使该链接生效。这提醒我,我去年冬天才了解到Yahoo! 体育广告感染了某种恶意软件(或会感染您)。这位管理家庭网络的年轻人将我们留在了黑名单的众多感染性广告站点上。
Mark C

7

我的主要原因是,它抑制了最烦人的广告。我宁愿不使用AdBlock Plus,因为这可能会影响我访问的网站的收入(并且我使用了一个或两个服务条款规定我不会禁用广告的网站)。NoScript限制了广告的潜在讨厌性,我愿意与其他广告一起生活。

还有安全方面的考虑,并且这在很大程度上还与广告有关,因为任何出售广告的网站都必须被视为具有潜在的敌意。

此外,在访问网站之前,我不一定知道网站是狡猾的。有些人喜欢发送指向站点的链接,并且不一定诚实。


此外,受信任的站点可能会通过XSS或由于被黑客入侵而包含有害的Javascript。想起了诺贝尔奖获得者的例子。
Mnementh,2010年

4

因为浏览器以前的JavaScript实现速度很慢,并且太多的n00b Web设计人员只是将其用于不相关的事情,例如按钮翻转。

在具有现代浏览器的快速计算机上,没有一个头脑正常的人一直都在禁用它。但这并不是说没有很多“安全意识”强的人和其他人没有足够的资金,欲望或专门知识来在快速的计算机上运行现代的浏览器……直到最近IE6才停止互联网上最受欢迎的浏览器!


“以及其他没有资金,愿望或知识的人都可以在快速的计算机上运行现代的浏览器”。我可以理解并同意“资金”部分。我可以通过“需求”部分来理解,尽管我认为通常将“需求”作为拒绝拥有一台像样的计算机的强制约束。但是我并没有真正了解“诀窍”部分。您怎么会不熟练到不购买最新电脑的程度?或者,如果您这样做,则将其滥用到不安装捆绑的浏览器而改用较旧的浏览器的程度?:)
haylem 2010年

2

激活Javascript后,任何网站都可以在我的计算机上执行代码。我什至不知道特定的网站是否执行代码及其功能。更糟糕的是,其他人可能在我不知情的情况下将代码插入到通常无害的网站(XSS)中。最近,一个著名的德国计算机杂志未发表文章,当时只有16岁,他尝试了德国最常见的银行的在线银行站点。他们中的许多人-包括最大的人-都容易受到XSS的攻击。而且,您甚至没有注意到,您的在线银行站点执行的Javascript会发生变化,例如交易的目标和金额。使用禁用的Javascript,在受信任站点的上下文中进行XSS攻击是没有用的,我不会执行恶意代码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.