hack envjs element css style parsing
This commit is contained in:
parent
9aca411bbd
commit
d0a6f2b556
|
@ -55,7 +55,8 @@
|
||||||
* Envjs specific hacks
|
* Envjs specific hacks
|
||||||
* 1) Fix Envjs relative path system to work with Windows path systems
|
* 1) Fix Envjs relative path system to work with Windows path systems
|
||||||
* 2) Fix window.setTimeout() using Rhino specific functions
|
* 2) Fix window.setTimeout() using Rhino specific functions
|
||||||
* 3) Fix CSS2Properties support: all properties have the same objmaps, wtf?
|
* 3) Fix CSS2Properties support for parsing style attributes: get from raw node context.
|
||||||
|
* 4) Fix CSS2Properties support for setting values: all properties have the same objmaps, wtf?
|
||||||
*/
|
*/
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
|
@ -74,6 +75,29 @@
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
(function(Element) {
|
||||||
|
|
||||||
|
var style = "style";
|
||||||
|
function lookupStyleInNodeAttributes(el) {
|
||||||
|
if(el.attributes) {
|
||||||
|
for(var i = 0; i < el.attributes.length; i++) {
|
||||||
|
if(el.attributes[i].nodeName === style) {
|
||||||
|
return el.attributes[i].nodeValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var styleSetFn = Element.__lookupGetter__(style);
|
||||||
|
Element.__defineGetter__(style, function() {
|
||||||
|
if(!this.cssText) {
|
||||||
|
this.cssText = lookupStyleInNodeAttributes(this);
|
||||||
|
}
|
||||||
|
return styleSetFn.apply(this);
|
||||||
|
});
|
||||||
|
|
||||||
|
})(HTMLElement.prototype);
|
||||||
|
|
||||||
(function(css) {
|
(function(css) {
|
||||||
|
|
||||||
var setCssProperty = css.prototype.setProperty;
|
var setCssProperty = css.prototype.setProperty;
|
||||||
|
@ -82,9 +106,8 @@
|
||||||
if(Object.keys(Object.getPrototypeOf(this.styleIndex)).length === 0) {
|
if(Object.keys(Object.getPrototypeOf(this.styleIndex)).length === 0) {
|
||||||
this.styleIndex = Object.create(this.styleIndex);
|
this.styleIndex = Object.create(this.styleIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
return setCssProperty.call(this, name, value);
|
return setCssProperty.call(this, name, value);
|
||||||
}
|
}
|
||||||
})(CSS2Properties);
|
})(CSS2Properties);
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -1,7 +1,46 @@
|
||||||
|
|
||||||
|
importPackage(org.apache.commons.io);
|
||||||
|
importPackage(java.io);
|
||||||
|
|
||||||
|
var loadFixtures = function() {
|
||||||
|
this.fixturesPath = "src/test/javascript/specs/fixtures";
|
||||||
|
|
||||||
|
var read = "";
|
||||||
|
for(var i = 0; i < arguments.length; i++) {
|
||||||
|
read += FileUtils.readFileToString(new File(this.fixturesPath, arguments[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
document.body.innerHTML = document.body.innerHTML + read;
|
||||||
|
}
|
||||||
|
|
||||||
|
var cleanupFixtures = function() {
|
||||||
|
document.body.innerHTML = "";
|
||||||
|
}
|
||||||
|
|
||||||
describe("envjs fixes", function() {
|
describe("envjs fixes", function() {
|
||||||
|
|
||||||
describe("CSS2 style property support", function() {
|
describe("CSS2 style property support for parsing style attributes", function() {
|
||||||
|
beforeEach(function() {
|
||||||
|
loadFixtures("styleAttributes.html");
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(cleanupFixtures);
|
||||||
|
|
||||||
|
it("should get a style attribute from a static DOM element", function() {
|
||||||
|
var div = document.getElementById("div");
|
||||||
|
expect(div.style.color).toBe("blue");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should get a style attribute with dashes using camelCasing properties", function() {
|
||||||
|
var spanStyle = document.getElementById("span").style;
|
||||||
|
|
||||||
|
expect(spanStyle.backgroundColor).toBe("green");
|
||||||
|
expect(spanStyle.fontSize).toBe("8pt");
|
||||||
|
expect(spanStyle.fontFamily).toBe("verdana");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("CSS2 style property support for setting values", function() {
|
||||||
|
|
||||||
var someColor = "#FFFFFF";
|
var someColor = "#FFFFFF";
|
||||||
var someFont = "12px 'Bitstream Vera Sans Mono','Courier',monospace";
|
var someFont = "12px 'Bitstream Vera Sans Mono','Courier',monospace";
|
||||||
|
|
Reference in New Issue