在JavaScript/jQuery中获取CSS规则

r3i60tvu  于 2023-08-04  发布在  jQuery
关注(0)|答案(2)|浏览(72)

我希望CSS的规则被提取并显示在下拉菜单中。为此我在做:

var opnr = window.opener ; 
function getStyle() { 
    var selCss=opnr.document.getElementById("CSS");
    loadjscssfile("css/"+selCss.value,"css");
    var cssRef = document.styleSheets[0];
    cssRef.href ='css/'+ selCss.value;
    var classes = cssRef.rules || cssRef.cssRules ;
    var select = document.getElementById('stylefieldid');//document.createElement('select');
    
    for(var x=0;x<classes.length;x++) { 
       var option = document.createElement('option');
       var className = classes[x].selectorText;
       if(className.startsWith('.')){
           className = className.substring(1,className.length);
       }
          option.text = className;
          option.value = className;
       select.add(option);
    } 
} 

function loadjscssfile(filename, filetype){
    var fileref; 
    if (filetype=="js")
    {
        fileref=document.createElement("script");
        fileref.setAttribute("type","text/javascript");
        fileref.setAttribute("src", filename);
    } 
    else if (filetype=="css"){
        fileref=document.createElement("link");
        fileref.setAttribute("rel", "stylesheet");
        fileref.setAttribute("type", "text/css");
        fileref.setAttribute("href", filename);
    } 
    if (typeof fileref!="undefined")
        document.getElementsByTagName("head")[0].appendChild(fileref);
}

字符串
但这显示了突然的行为,变量classes有时是未定义的,而它有时是有值的...我尝试向cssRef.href发出警报,它为我提供了正确的值。
代码在FF上根本不起作用。是否有任何变通方法?
为什么会这样呢?
在jQuery中是否有其他选择?

eulz3vhy

eulz3vhy1#

您确定您的程式码会在网页载入后引发吗?尝试在<body onload="someFunction()">中的代码之后或在页面底部调用它

2fjabf4q

2fjabf4q2#

在服务器端使用css解析器完成,并将列表传递给jsp页面。。并在所有现代浏览器上工作。
谢谢你的回复:)

相关问题