diff --git a/src/standard/effectBuilder.html b/src/standard/effectBuilder.html
index e2154c7929..81b40b1860 100644
--- a/src/standard/effectBuilder.html
+++ b/src/standard/effectBuilder.html
@@ -289,10 +289,12 @@
(node.localName == 'input' && property == 'value')) {
value = value == undefined ? '' : value;
}
- // TODO(kschaaf): Ideally we'd use `fromAbove: true`, but this
- // breaks read-only properties
- // this.__setProperty(property, value, true, node);
- return node[property] = value;
+ // setProperty using fromAbove to avoid spinning the wheel needlessly.
+ var pinfo;
+ if (!node._propertyInfo || !(pinfo = node._propertyInfo[property]) ||
+ !pinfo.readOnly) {
+ this.__setProperty(property, value, true, node);
+ }
}
},