TOGOUTECH

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

coder 2024-05-16 原文

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

据我所知,评论者指的是 Content Security Policy ,一个相对较新的提案,如果实现,它将限制或完全禁用内联脚本。

但是,我注意到:

我的问题基本上是,#3 我错了吗?内联 JavaScript 支持可能会被淘汰吗?


顺便说一下,我在 SO 上提出这个问题,因为我认为这可能是“软件开发独有的实际的、可回答的问题”。如果其他人认为这太宽泛或属于 SE 的其他地方,我想听听您的建议。提前致谢!

最佳答案

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

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

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

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

关于javascript - 我应该完全停止使用内联 JavaScript 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22359108/

有关javascript - 我应该完全停止使用内联 JavaScript 吗?的更多相关文章

  1. c# - 我们应该把类、枚举和其他实体放到它们自己的文件中吗? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我和我们公司的teamlead\architect就这个话题进行了讨论。他认为,如果将“按逻辑连接的实体”放在一个cs文件中,则更容易理解大型项目。我引用:“逻辑和接口(interface)和类的整个结构可以在一个地方看到,这是一个无法反驳的论点。看到同样的东西但是一堆您需要使用工具、类图、用于导航的R#等的文件。”“根据糟糕的理论,我可能会尖叫说一大群分

  2. c# - 一次性元素是否应该传入? - 2

    在一次代码审查中,一位同事更改了我的代码以将Stream作为参数传递。他说这是为了确保调用者清楚处置对象的责任。从某种意义上说,我可以同情。我希望对象创建者也负责清理。另一方面,这两种方法都使using的必要性变得更加清晰。我也更喜欢更简单的方法调用。拿publicstaticTextReaderSerialize<T>(Tobj)whereT:new(){if(obj==null)thrownewArgumentNullException("obj");returnSerialize<T>(obj,null);}对比publicstaticvo

  3. c# - 什么应该放入 AssemblyTrademarkAttribute 中? - 2

    VisualStudio默认为C#程序集生成这组属性:[assembly:AssemblyTitle("ContosoApp")][assembly:AssemblyDescription("Contoso'slatestgreatproduct.")]#ifDEBUG[assembly:AssemblyConfiguration("Debug")]#else[assembly:AssemblyConfiguration("Release")]#endif[assembly:AssemblyCompany("

  4. c# - ASP.NET Core IHostedService 手动启动/停止/暂停(?) - 2

    我想在ASPNETCore中实现一个可以按需停止和启动的循环(定时)IHostedService实例。我的理解是IHostedService(s)是在应用程序启动时由框架启动的。但是,我希望能够“手动”启动/停止服务,或许可以通过UI使用开/关切换。理想情况下,“关闭”状态将处理当前正在运行的服务,而“开启”状态将创建一个新实例。我在这里阅读了MS文档:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-2.1.我最初的想法是获取正在运行的服务的实

  5. c# - WPF:为什么我应该使用现有的 MVVM 框架而不是编写自己的框架? - 2

    我想知道MVVM框架能给我带来什么好处(例如mvvmlight、prism等)。如果你能给我从最重要到最不重要的要点。我只是想了解我是应该使用MVVM框架还是自己编写代码。 最佳答案 您可以在没有框架的情况下开始使用MVVM,并且可以随着时间的推移构建自己的基础代码。它可能会帮助您更好地学习模式。一旦你理解了它,你就会更好地体会到像CaliburnMicro这样的框架的力量。给你。当然,这些框架将所有基本模板代码排除在外,但它们还可以添加高级绑定(bind)、操作和组合功能。我刚刚收听了对CaliburnMicro作者的播客采访。也

  6. c# - 使用 IronPython 时禁用第一次机会异常但调试器在 try...catch 中停止 - 2

    应在不停止调试器的情况下执行以下代码:varengine=Python.CreateEngine(AppDomain.CurrentDomain);varsource=engine.CreateScriptSourceFromString("Foo.Do()");varcompiledCode=source.Compile(newPythonCompilerOptions{Optimized=true});try{compiledCode.Execute(engine.CreateScope(newDictionary<string,object>{{

  7. c# - 如何停止双击窗口标题栏以最大化 FormBorderStyle.FixedToolWindow 的窗口? - 2

    令我恼火的是,我promise会提供一个用户无法调整大小的固定窗口,但他们当然可以双击标题栏来最大化这个“不可调整大小”的窗口。我怎样才能关闭它?我可以使用winforms代码来完成,还是必须转到Win32?谢谢! 最佳答案 您可以将表单的MaximizeBox属性设置为false 关于c#-如何停止双击窗口标题栏以最大化FormBorderStyle.FixedToolWindow的窗口?,我们在StackOverflow上找到一个类似的问题: https:

  8. c# - "or"应该与 .Net4 Hasflags 一起工作 : enum. HasFlag(AccessRights.Read | AccessRights.Write) - 2

    我正在尝试新的HasFlags功能,并想知道以下应该工作:enum.HasFlag(AccessRights.Read|AccessRights.Write)...因为好像没有...DBAccessRightsrights=(DBAccessRights)permission.PermissionFlags;if(rights.HasFlag(DBAccessRights.WikiMode)){//works}if(rights.HasFlag(DBAccessRights.WikiMode|DBAccessRights.CreateNew)){//Doesn'twork}DB

  9. c# - 我应该捕获并包装一般异常吗? - 2

    可以将以下代码视为一种良好做法吗?如果不是,为什么?try{//codethatcancausevariousexceptions...}catch(Exceptione){thrownewMyCustomException("Customerrormessage",e);} 最佳答案 简短回答:除非有某些原因,否则不要这样做。相反,在您可以处理它们的时候捕获您可以处理的特定异常,并允许所有其他异常在堆栈中冒泡。TL;DR回答:这取决于你在写什么,什么将调用你的代码,以及为什么你觉得你需要引入自定义异常类型。我认为最

  10. (完全理解)二重积分中的换元积分中的雅可比矩阵 - 2

    文章目录前言引入推导疑惑前言我们知道,在二重积分中,换元积分如下:但是很多人并不知道为什么是这样,所以一直记不住换元积分的公式。引入我们首先得明白,二重积分有点类似于求体积,f(x,y)就是高,D是底。然后积分,就是求和。将这个体积分成无数个小竖块,每一个小竖块都看成一个长方体,底面积就是dxdy,高就是f(x,y)。如下:下面是在计算以PQ,PR围成的面积,即dxdy。然后在这个小区域里面,它的高看成了长方体&#

随机推荐

  1. c# - 字符串比较 == 是否仅因为字符串不可变才起作用? - 2

    我之前在比较两个字符串和它们的变量时有一个想法:stringstr1="foofoo";stringstrFoo="foo";stringstr2=strFoo+strFoo;//Eventhoughtstr1andstr2reference2different//objectsthefollowingassertionistrue.Debug.Assert(str1==str2);这是否纯粹是因为.NET运行时识别字符串的值是相同的并且因为字符串是不可变的使得str2的引用等于str1的引用?所以当我们执行str1==str2时,我们实际上比较引用而不

  2. c# - 对列表进行排序,使特定值排在最前面 - 2

    我有一个Offer类,其中包含一个已归档的类别。我希望特定类别的所有报价显示在顶部,然后是其他所有报价。我试过了,但没有用,你有什么推荐的?Offers=Offers.OrderBy(x=>x.Category=="Corporate").ToList(); 最佳答案 当您按bool值排序时,false(0)出现在true(1)之前。要首先获取与谓词匹配的元素,您应该使用OrderByDescending反转排序顺序:Offers=Offers.OrderByDescending(x=>x.Categor

  3. c# - 代码隐藏中的动态上下文菜单 - 2

    我只想为我动态创建的几个对象添加ContextMenu,但是我发现的唯一方法是像这样在运行时创建ContextMenu:ContextMenupMenu=newContextMenu();MenuItemitem1=newMenuItem();MenuItemitem2=newMenuItem();//Ihaveabout10items//...item1.Header="item1";item1.Click+=newRoutedEventHandler(item1_Click);pMenu.Items.Add(item1);item2.Header="item

  4. c# - 以管理员身份运行 : requireAdministrator & ClickOnce + emulating system time - 2

    我的应用程序使用ClickOnce技术。今天我需要以管理员身份运行它。我修改了来自的list文件<requestedExecutionLevellevel="asInvoker"uiAccess="false"/>到<requestedExecutionLevellevel="requireAdministrator"uiAccess="false"/>但是VS无法编译项目:Error35ClickOncedoesnotsupporttherequestexecutionlevel'requ

  5. c# - 从 C# 中删除数据库 - 2

    在使用MSTEST进行测试期间,我有一个MDF文件附加到我的本地SQL服务器,我不想在运行测试集50次后手动删除这些临时数据库。(我已经这样做了,但我不喜欢它>.在我的TestCleanup方法中,我正在寻找一种在完成测试后从服务器中删除数据库的方法。我只需要一些关于我将使用哪些SQL语句来执行此操作的指导。EDIT(由SoftwareMonkey,从OP拒绝的编辑到ODED的回答)这是对我有用的代码:varserver=newServer(serverName);//Canuseoverloadthatspecifiesforeach(Databasedbinserver.Datab

  6. c# - 正则表达式删除特殊字符 - 2

    我们需要一个C#函数来删除字符串中的所有特殊字符。此外,是否可以将“George's”更改为“George”(同时删除单引号和字符s)? 最佳答案 此方法将删除除字母、数字和空格之外的所有内容。它还将删除任何后跟字符s的'或"。publicstaticstringRemoveSpecialCharacters(stringinput){Regexr=newRegex("(?:[^a-z0-9]|(?<=['\"])s)",RegexOptions.IgnoreCase|RegexOptions.

  7. c# - Unity 应用程序 block 2.0 - 给定的程序集名称或代码库无效 - 2

    接口(interface)(在名为“Interfaces”的程序集中。在项目中:-Interfaces)namespaceInterfaces{publicinterfaceIDoSomeWork1{stringDoSomeWork1();}}namespaceInterfaces{publicinterfaceIDoSomeWork2{stringDoSomeWork2();}}依赖项(在名为“Entities”的程序集中。在项目中:-Entities)namespaceEntities{publicclassClassB:IDoSomeWork1{publicstringDoSom

  8. C# 在 X 秒后执行操作 - 2

    我想开发一个Windows控制台应用程序,它在给定时间后定期执行一个操作。我在某处读到计时器类仅适用于Windows窗体应用程序,那么完成我想要的东西的最佳方法是什么? 最佳答案 Originalmessage:Iwrotethissampleconsoleapplication(usingC#4.0[asindicatedbythedefaultparameters]).It'sextremelyversatileandutilizestheActiondelegatetoallowpassingsnippetsthaty

  9. c# - C# 中的默认访问修饰符 - 2

    如果我要创建一个如下所示的新对象,它默认具有哪个访问修饰符?ObjectobjectA=newObject(); 最佳答案 任何成员都将始终拥有最受限制的可用成员-因此在这种情况下,objectA的可访问性是private。(假设它是一个实例变量。作为局部变量没有任何意义,因为它们本身没有任何访问规则。)所以这样:classFoo{ObjectobjectA=newObject();}等同于:internalclassFoo{privateObjectobjectA=newObject();}“默认为最私有(private)”意味着

  10. c# - 这些对象的引用是在栈上还是在堆上? - 2

    如果有人能告诉我我是否理解得很好,我将不胜感激:classX{Aa1=newA();//referenceonthestack,objectvalueontheheapa1.VarA=5;//onthestack-valuetypeAa2=a1;//referenceonthestack,objectvalueontheheapa2.VarA=10;//onthestack-valuetype}此外,a1和a2引用都在堆栈上,而它们的“对象”值在堆上。但是VarA变量呢,它仍然是纯值类型?classA{intVarA;} 最佳答案