A client has changed their CSP to ban inline styles on their server. As far as I can tell, this means that we can no longer use JS to dynamically position/animate/style HTML
The proper workaround for this issue is to use the CSS Object Model (CSSOM).
Given the following ways of setting the style:
...
// fails due to CSP
document.getElementById(id).setAttribute('style', 'left: 343px'); // fails due to CSP
document.getElementById(id).style.left = '343px';
Only the last one will successfully comply with a CSP directive of style-src: self
(because it's using the CSSOM).
That's why using jQuery's .css() function works:
When using .
css()
as a setter, jQuery modifies the element'sstyle
property. For example,$( "#mydiv" ).css( "color", "green" )
is equivalent todocument.getElementById( "mydiv" ).style.color = "green"
.