Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript css样式是否有等效的eval?_Javascript_Css_Eval - Fatal编程技术网

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代码不应该出现在页面中。“Does
    document.getElementsByTagName('head')[0].appendChild(style)
    append
    css
    text to
    DOM
    ?@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; }';