我应该完全停止使用内联JavaScript吗?

我应该完全停止使用内联JavaScript吗?,javascript,standards,Javascript,Standards,在关于SO的其他讨论中,我被告知“[m]ost浏览器将不会执行内联javascript…这些天来。”这对我来说是新闻,我一直在研究以验证这一说法,为了了解我是否需要调整我维护的一些网站上的代码,以使它们与未来的浏览器兼容 据我所知,评论者所指的是一个相对较新的建议,如果实施,将限制或完全禁用内联脚本 然而,我注意到: 我怀疑任何Web服务器在默认情况下都无法发送此消息 目前,对it的需求仅限于最新和最好的,尤其是在移动设备上 这并没有(对我来说)表明“大多数浏览器”根本不会提供内联JavaSc

在关于SO的其他讨论中,我被告知“[m]ost浏览器将不会执行内联javascript…这些天来。”这对我来说是新闻,我一直在研究以验证这一说法,为了了解我是否需要调整我维护的一些网站上的代码,以使它们与未来的浏览器兼容

据我所知,评论者所指的是一个相对较新的建议,如果实施,将限制或完全禁用内联脚本

然而,我注意到:

  • 我怀疑任何Web服务器在默认情况下都无法发送此消息

  • 目前,对it的需求仅限于最新和最好的,尤其是在移动设备上

  • 这并没有(对我来说)表明“大多数浏览器”根本不会提供内联JavaScript,也没有表示他们计划在将来实现这样的功能

我的问题基本上是,我对#3的看法错了吗?内联JavaScript支持很可能会消失吗



顺便说一句,我这样问是因为我认为这可能是一个“实用的、可回答的问题,这是软件开发所特有的。”如果其他人认为这太宽泛或属于SE上的其他地方,我想听听你的建议。提前谢谢

正如评论所说,谁说的都是错的

然而,您仍然应该停止使用内联JavaScript(例外,像Angular这样的框架),因为这是一种糟糕的做法。关注点应该分开。例如:

<someElement onlick="func()">Derp</someElement> // this is bad.
someElement.addEventListener("click",func,false); //this is much better
Derp//这很糟糕。
someElement.addEventListener(“单击”,func,false)//这样好多了
它更容易阅读,而且在更大的应用程序中,它更容易维护,尤其是在单独的文件中


是的,它的作用仍然是一样的,但根据我的经验,调试内联js时遇到的问题比调试外部脚本时要多得多。

如果默认禁用内联javascript,将有数亿个网页停止工作。这样做的浏览器必须非常勇敢

浏览器中的向后兼容性是一件好事,也是一件坏事(想想IE吧!)。这是一件坏事,因为如果不支持遗留代码的话,它们会变得更轻、更快;而这是一件好事,否则,数亿个不再有人维护的有用网页将几乎丢失

认为没有浏览器,即使使用HTML5,也不会对HTML强制执行严格的规则,所以我怀疑内联javascript是否会被禁用。即使引入了一种方法,作为开发人员,您也可以禁用该选项(或者更好,不启用它)

也就是说,我将是第一个在我自己的网站上启用它的人,因为我讨厌内联代码。我的建议是:除非绝对必要,否则不要使用它。

浏览器将执行内联JavaScript 如果启用了JavaScript,所有浏览器都将执行内联JavaScript。告诉你这件事的人是错的

默认情况下,浏览器可能会继续执行内联JavaScript。 内联JavaScript是使脚本出现在页面中特定点的最简单方法。互联网是民主的。你不需要是一个计算机科学家就可以用闪烁的文本和一只跳舞的企鹅拼凑出一个可渲染的HTML页面。这就是网络的本来面目

此外,有时能够将内容管理的JSON对象从HTML传递到静态脚本也很有用。任何删除此功能的浏览器都会立即变得不那么有用,人们也会迁移

内联JavaScript的问题(为什么这实际上是一个好主意) 允许内联JavaScript使得跨站点脚本(XSS)攻击相当容易。攻击者将一些JavaScript输入到web表单(可能是注释框)中,然后服务器将该脚本呈现到页面中。然后,该脚本可以执行窃取登录凭据或重定向到另一个包含恶意软件的页面等操作

目前XSS必须在每台服务器的基础上进行处理,这实际上比您想象的要困难,因为有许多方法可以执行脚本。实现一个关闭内联脚本的简单头元素将是防止所有XS的一种更简单的方法

如果可能,最好不要使用内联JavaScript 关于使用内联JavaScript,您应该三思。关注点分离(HTML5表示意义,CSS3表示样式,JavaScript表示行为)仍然是一种良好的实践。它更整洁,更容易维护。另外,通过将JavaScript分离到一个单独的文件中,您可以获得缓存的好处。每次查看站点上的页面时,无需下载脚本

优化纯速度
例外情况是,如果您正在优化速度。将脚本内联放置在文件末尾将确保内容尽快可见。这是谷歌喜欢的一种技术。我个人不这么认为,因为它会使代码变得凌乱,但会使页面内容呈现得稍快一些。

任何人告诉你“大多数浏览器不会执行内联javascript”都是错误的。CSP与内联javascript无关。相反,它指定允许页面从哪些域下载和执行脚本。或者我们对“内联脚本”有不同的定义。@zzbov同意。无论谁使用这些浏览器,浏览网页都会非常困难。这个SO页面上甚至有一些内联脚本。虽然内联并不坏,但根据内联的大小,阅读它可能会有点痛苦。不过,这更像是一种编码礼节,让它更具可读性。我的观点是正确的!无论如何,关键是如果你拥有这个页面,你可以通过设置正确的策略来做任何你想做的事情。如果改为编写库,则无论如何都不能使用内联脚本。“此外,一些实现将不尊重
不安全的内联
”T