Ich versuche, so dass in JavaScript Parsing von CSS zu implementieren:Parsing CSS in JavaScript/jQuery
a {
color: red;
}
in das Objekt analysiert wird:
{
'a' {
'color': 'red'
}
}
Zunächst einmal gibt es einen JavaScript/jQuery Bibliothek kann ich verwenden?
Meine Implementierung ist ziemlich einfach, also bin ich mir sicher, dass es auf keinen Fall narrensicher ist. Zum Beispiel arbeitet es für grundlegende CSS in Ordnung, aber für eine Eigenschaft des Typs:
background: url(data:image/png;base64, ....);
Es schlägt fehl, weil ich split(';')
bin mit property:value
Paare zu trennen. Hier tritt ;
im value
auf, also teilt es sich auch an diesem Punkt.
Gibt es eine alternative Möglichkeit, dies zu tun? Hier
ist der Code:
parseCSS: function(css) {
var rules = {};
css = this.removeComments(css);
var blocks = css.split('}');
blocks.pop();
var len = blocks.length;
for (var i = 0; i < len; i++)
{
var pair = blocks[i].split('{');
rules[$.trim(pair[0])] = this.parseCSSBlock(pair[1]);
}
return rules;
},
parseCSSBlock: function(css) {
var rule = {};
var declarations = css.split(';');
declarations.pop();
var len = declarations.length;
for (var i = 0; i < len; i++)
{
var loc = declarations[i].indexOf(':');
var property = $.trim(declarations[i].substring(0, loc));
var value = $.trim(declarations[i].substring(loc + 1));
if (property != "" && value != "")
rule[property] = value;
}
return rule;
},
removeComments: function(css) {
return css.replace(/\/\*(\r|\n|.)*\*\//g,"");
}
Dank!
Warum möchten Sie das tun? Was versuchst du zu erreichen? Vielleicht gibt es eine andere (einfachere) Art und Weise, Ihr Problem zu lösen –
blau geparst zu rot ?!:) –
@Pablo Ich habe versucht, über alternative Möglichkeiten nachzudenken, mit denen ich in der Lage sein könnte, die Notwendigkeit, CSS zu analysieren, aber leider muss ich die Regeln in einigen Datenstruktur speichern. Mein Projekt funktioniert damit eigentlich ganz gut, da es sich meist um grundlegende CSS-Regeln (Major Use Case) handelt. Es ist jedoch nett, narrensicher zu sein, da es einen Anwendungsfall gibt, bei dem es notwendig ist, CSS zu analysieren. – ankit