Fallback to legacy set/get in old versions of FF (#6930)

This commit is contained in:
Andrew Imm
2016-06-02 11:35:21 -07:00
committed by Jim
parent e0fc4cc3a2
commit c73baa6a8b
+22 -4
View File
@@ -58,10 +58,28 @@ var inputValueTracking = {
var node = ReactDOMComponentTree.getNodeFromInstance(inst);
var valueField = isCheckable(node) ? 'checked' : 'value';
var descriptor = Object.getOwnPropertyDescriptor(
node.constructor.prototype,
valueField
);
var descriptor;
try {
// Accessing quick-stubbed properties of prototypes in older versions of
// Firefox will throw a NS_ERROR_XPC_BAD_OP_ON_WN_PROTO exception
descriptor = Object.getOwnPropertyDescriptor(
node.constructor.prototype,
valueField
);
} catch (e) {
var proto = node.constructor.prototype;
// Attempt to fall back to Firefox's deprecated setters / getters
if (
typeof proto.__lookupSetter__ === 'function' &&
typeof proto.__lookupGetter__ === 'function'
) {
descriptor = {
enumerable: true,
get: proto.__lookupGetter__(valueField),
set: proto.__lookupSetter__(valueField),
};
}
}
var currentValue = '' + node[valueField];