Javascript 禁止内联样式CSP和HTML元素的动态定位
客户端已更改其CSP,以禁止其服务器上的内联样式。据我所知,这意味着我们不能再使用JS来动态定位/动画化/样式化HTML元素,例如,我们不能检测DOM元素的位置,并通过JS定位它旁边的另一个元素Javascript 禁止内联样式CSP和HTML元素的动态定位,javascript,html,css,content-security-policy,Javascript,Html,Css,Content Security Policy,客户端已更改其CSP,以禁止其服务器上的内联样式。据我所知,这意味着我们不能再使用JS来动态定位/动画化/样式化HTML元素,例如,我们不能检测DOM元素的位置,并通过JS定位它旁边的另一个元素 这是正确的吗?有没有一种变通方法可以让我们使用这个CSP限制动态地设置DOM元素的动画?JavaScript在客户端上执行。除非过滤软件非常聪明,否则您仍然可以添加动态内联样式,因为服务器不知道浏览器中发生了什么。但是,您不能将内联样式添加为发送给客户端的HTML的一部分。解决此问题的正确方法是使用CS
这是正确的吗?有没有一种变通方法可以让我们使用这个CSP限制动态地设置DOM元素的动画?JavaScript在客户端上执行。除非过滤软件非常聪明,否则您仍然可以添加动态内联样式,因为服务器不知道浏览器中发生了什么。但是,您不能将内联样式添加为发送给客户端的HTML的一部分。解决此问题的正确方法是使用CSS对象模型(CSSOM) 给定以下设置样式的方法:
.
//由于CSP而失败
document.getElementById(id).setAttribute('style','left:343px');//由于CSP而失败
document.getElementById(id.style.left='343px'代码>
style src:self
(因为它使用的是CSSOM)
这就是使用函数的原因:
当使用.css()作为setter时,jQuery修改元素的样式
属性。例如,$(“#mydiv”).css(“color”、“green”)
相当于document.getElementById(“mydiv”).style.color=“green”
动画不需要javascript,可以使用css3关键帧和过渡设置动画类,只需将类附加到相关元素。然而,令人遗憾的是,无论如何,附加都必须使用javascript执行。如果不使用javascript,不刷新整个页面,就无法设置dom元素的动画…谢谢,但我确实需要能够通过设置CSS位置来使用javascript动态定位元素。例如。我需要查找元素的位置(左),然后通过JavaScript更改此位置。因此,我需要设置一个类似style=“left:343px;”的行样式。在页面加载之前,我不知道这个位置是什么。我唯一能想到的是创建一个涵盖所有这些位置的类的整体加载(例如left1:left:1px;)还有其他方法吗?没有人会这么做,如果不是三倍的话,它可能会让你的流量翻倍。看看,它可能会给你一个方向:是的,我没有意识到你可以使用JS/jQuery添加样式,例如..css()等等。谢谢。您可以修改样式属性,但使用JS插入样式元素仍然违反CSP。这是误导性的,不应标记为答案。@MikePost有正确的答案