Here is my program what I done. There maybe bugs still. It shows the idea of the project I am working on.
mynamespace.removeClass = function(node, selectorText, classNames){
for (var k in classNames)
{
var hasClass = new RegExp( "/" + classNames[k] + "/");
if ( hasClass.test(selectorText) )
node.removeClass(classNames[k]);
}
}
mynamespace.filterStyles = function(node, searchStyles ) {
var classNames = node.prop("className").split(" ");
var sheets = document.styleSheets, o = {};
var rules;
for (var i in sheets) {
// Firefox - Security fix:
try { rules = sheets[i].cssRules; } catch(err) {}
if(rules)
for (var r = 0; r < rules.length; r++) {
if (node.is(rules[r].selectorText))
{
var selector;
selector = mynamespace.searchRule(rules[r].style, searchStyles);
if (!selector)
selector = mynamespace.searchRule(node.attr('style'), searchStyles);
if (selector)
mynamespace.removeClass(node, selector, classNames);
}
}
}
return false;
}
/* searchRule searches rules,
compares with ss searchStyles,
returns selectorText if condition is true,
returns false if condition is false.
*/
mynamespace.searchRule = function(css, ss ) {
if (typeof css == "undefined" )
return false;
var selector = css.parentRule.selectorText;
if (css instanceof CSSStyleDeclaration) {
for (var i = 0; i<css.length; i++)
{
/*
var ss = {
position: { val: "relative", op: "=" },
left: { val: null , op: "" },
right: { val: null , op: "" },
top: { val: null , op: "" },
bottom: { val: null , op: "" },
float: { val: "none" , op: "!" , andop: "-" }
} */
for (var a in ss)
{
if ( a == css[i] )
{
if ( ss[a].val === null && css[a] )
return selector;
else
if ( ss[a].op == "=" && ss[a].val === css[a] )
return selector;
else
if ( ss[a].op == "!" )
{
if ( ss[a].hasOwnProperty("andop") )
{
if ( ss[a].andop == "-" )
{
if ( css[a] != "" )
return selector;
}
}
else
{
if( ss[a].val != css[a] )
return selector;
}
return selector;
}
}
} // end inner for
} // end outer for
} // if css instance of
else if (typeof css == "string") {
css = css.split("; ");
// not implemented
}
return false;
}
/* Implementation */
var searchStyles = {
position: { val: "absolute", op: "=" },
left: { val: null , op: "" },
right: { val: null , op: "" },
top: { val: null , op: "" },
bottom: { val: null , op: "" },
float: { val: "none" , op: "!" , andop: "-" }
}
var selectors = "div.fauxcolumn-right-outer;div.fauxcolumn-center-outer"
selectors = selectors.split(";");
var searches = [];
var targets = [];
for ( var k in selectors )
{
if ( (k % 2) == 0 )
searches.push(selectors[k]);
else
targets.push(selectors[k]);
}
for ( var k in searches )
{
search = $(searches[k]);
mynamespace.filterStyles(search, searchStyles);
target = $(targets[k]);
mynamespace.filterStyles(search, searchStyles);
}
If you see any bugs please let me know.