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); + } } },