Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
将CSS规则放入javascript变量中_Javascript_Jquery_Html_Css - Fatal编程技术网

将CSS规则放入javascript变量中

将CSS规则放入javascript变量中,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我希望能够使用JavaScript或jQuery选择CSS规则块,并将它们放入变量中,基本上就像样式表中预期的预格式化文本一样 理想情况下,我们会仔细评论我们的CSS样式,并将它们简单地放在html页面的标记中。JavaScript将找到在页面上的标记中封装规则的特定注释,并将这些规则作为文本复制到变量中,以供以后使用 /* CSS Rules */ .example{ font-size: 1em; color:blue; } /* end */ 在这种情况下,脚本将找到

我希望能够使用JavaScript或jQuery选择CSS规则块,并将它们放入变量中,基本上就像样式表中预期的预格式化文本一样

理想情况下,我们会仔细评论我们的CSS样式,并将它们简单地放在html页面的
标记中。JavaScript将找到在页面上的
标记中封装规则的特定注释,并将这些规则作为文本复制到变量中,以供以后使用

/* CSS Rules */

.example{
    font-size: 1em;
    color:blue;
}

/* end */
在这种情况下,脚本将找到字符串
/*CSS Rule*/
,然后选择它下面的所有行,直到找到终止注释
/*end*/


有什么想法吗?我在谷歌上搜索了不少解决方案,但我想这是一件非常不寻常的事情,很难找到任何指针。

好吧……你可以在你的样式标签上有一个id,比如

<style id="css">div{ background-color:red; }</style>

但是这整件事会让Ada Lovelace大哭,也许你可以找到另一种方法来满足你的需求?

这有点老套,但这里有一种方法可以做到这一点-

提取文本(使用regex或indexOf)-假设您有文本块,从中创建一个数据uri:

var cssURL = "data:text/css;charset=utf8," + encodeURIComponent(cssTxt);
创建链接元素并将rel设置为样式表(浏览器能够处理类型):

添加到要加载和分析的标题:

document.getElementsByTagName("head")[0].appendChild(link);
例子 只有绿色应该显示出来-

var css=“.s1{border:1px实心红色}”+
“/*开始*/.s2{边框:1px纯绿色}/*结束*/”+
“.s3{边框:1px纯蓝色}”;
//获取css文本并转换为数据uri
var start=css.indexOf(“/*start*/”);
var end=css.indexOf(“/*end*/”,start);
var cssTxt=css.substring(开始、结束);
var cssURL=“data:text/css;charset=utf8,”+encodeURIComponent(cssTxt);
//创建链接元素并添加到标题
var link=document.createElement(“链接”);
link.rel=“样式表”;
link.href=cssURL;
document.getElementsByTagName(“头”)[0].appendChild(链接)
s1类-忽略
s2类-应具有绿色边框

s3类-被忽略
为什么?我很确定有更有效的方法来实现你需要的。你想在运行时这样做,或者你只是想用文本解析器从文件中拉出东西?最简单的方法(如果这真的是你想要做的)可能是用来找到打开和关闭标签并在中间的文本。虽然正如helion3所说,这是一件很奇怪的事情,可能还有更好的方法。难道它们还没有JavaScript变量吗?e、 g:document.styleSheets[0].cssRules[0].cssTextcheck这个答案
var link = document.createElement("link");
link.rel= "stylesheet";
link.href = cssURL;
document.getElementsByTagName("head")[0].appendChild(link);