Javascript css样式是否有等效的eval?
我有一个从外部资源加载的样式元素,我想在不内联的情况下应用它的样式 例如,Javascript css样式是否有等效的eval?,javascript,css,eval,Javascript,Css,Eval,我有一个从外部资源加载的样式元素,我想在不内联的情况下应用它的样式 例如,将加载css文件并应用其规则,而不将其内联,将对javascript执行相同的操作 如果加载js的一个外部位,则可以使用eval()对其进行求值,即使不赞成这样做 但是,当加载一个外部样式时,我不知道如何计算它,只知道将它添加到dom中 那么,对于样式是否有类似于eval对于脚本的功能呢?有人知道一个好的黑客可以得到同样的效果吗 只要应用样式而不在dom中显示,任何事情都是可以的。您需要创建一个style标记添加到标题中,
将加载css文件并应用其规则,而不将其内联,
将对javascript执行相同的操作
如果加载js的一个外部位,则可以使用eval()
对其进行求值,即使不赞成这样做
但是,当加载一个外部样式时,我不知道如何计算它,只知道将它添加到dom中
那么,对于样式是否有类似于eval对于脚本的功能呢?有人知道一个好的黑客可以得到同样的效果吗
只要应用样式而不在dom中显示,任何事情都是可以的。您需要创建一个
style
标记添加到标题中,然后将完整的css内容设置为innerHTML
例:
您有两个选择:
JavaScript CSS解析器。例如,Node.js有纯js CSS解析器,请检查示例。但我不知道它的质量
将这些样式作为
元素的内容添加到DOM中,并在其上设置style.disabled=true
,使其规则不会影响当前内容
看看这个答案,您可以通过Jquery加载样式,只需将样式附加到标题中,为什么不将样式表放在DOM树中呢?你想避免污染它吗?“如何评估它”评估的预期结果是什么?在将css
文本附加到DOM
之前,是否要添加或删除css
文本的部分?预期的计算结果与使用link元素从外部链接样式表的结果相同。@BoltClock不确定OP是否试图1)在附加到之前修改css
文本DOM
;2) 作为样式表
或其他对象访问css
文本;3) 查看文档中应用的css
文本,而不使用当前的文档
?这就是OP所说的:“但是当加载一个外部样式位时,我不知道如何计算它,除了将它添加到dom中。”他们不希望这样。如果我没有错的话,要求是动态生成/加载的css内容必须应用于页面(eval
),并且css
代码不应该出现在页面中。OP还说:“只要样式应用而不显示在dom中,任何东西都可以。”“如果我没有错的话,要求动态生成/加载的css内容必须应用于页面(eval),css代码不应该出现在页面中。“Doesdocument.getElementsByTagName('head')[0].appendChild(style)
appendcss
text toDOM
?@guest271314:它将一个style元素追加到DOM中(从前两行代码可以看出)。出于某种原因,这是OP试图避免的。#2与OP试图实现的相反。OP确实希望CSS生效,但不希望通过样式元素将其添加到DOM。@BoltClock,那……那是不可能的。CSS有特殊性的概念,其中一个组成部分是样式包含的位置在DOM中。因此你不能有悬挂样式。是的,如果浏览器的作者级样式的实现严格地来自元素或元素,那么我同意OP想要的实际上是不可能的。(顺便说一句,你的意思是,不是特定性。)
var style = document.createElement('style');
style.type = 'text/css';
document.getElementsByTagName('head')[0].appendChild(style);
//here is the magic.
style.innerHTML = 'put the css content';
//Ex: style.innerHTML = '.cssClass { color: #F00; }';