Dan Abramov
7 years ago
committed by
GitHub
2 changed files with 48 additions and 0 deletions
@ -0,0 +1,45 @@ |
|||||
|
/** |
||||
|
* Copyright (c) 2013-present, Facebook, Inc. |
||||
|
* |
||||
|
* @emails react-core |
||||
|
* @flow |
||||
|
*/ |
||||
|
|
||||
|
// This is not pretty.
|
||||
|
// See https://github.com/facebook/react/issues/11538#issuecomment-417504600
|
||||
|
// We need this because we don't even offer official translations.
|
||||
|
// https://github.com/facebook/react/issues/12460
|
||||
|
|
||||
|
export default function patchDOMForGoogleTranslate() { |
||||
|
const originalRemoveChild = Node.prototype.removeChild; |
||||
|
// $FlowFixMe Intentionally monkepatching.
|
||||
|
Node.prototype.removeChild = function(child) { |
||||
|
if (child.parentNode !== this) { |
||||
|
if (typeof console !== 'undefined') { |
||||
|
console.error( |
||||
|
'Cannot remove a child from a different parent', |
||||
|
child, |
||||
|
this, |
||||
|
); |
||||
|
} |
||||
|
return child; |
||||
|
} |
||||
|
return originalRemoveChild.apply(this, arguments); |
||||
|
}; |
||||
|
|
||||
|
const originalInsertBefore = Node.prototype.insertBefore; |
||||
|
// $FlowFixMe Intentionally monkepatching.
|
||||
|
Node.prototype.insertBefore = function(newNode, referenceNode) { |
||||
|
if (referenceNode && referenceNode.parentNode !== this) { |
||||
|
if (typeof console !== 'undefined') { |
||||
|
console.error( |
||||
|
'Cannot insert before a reference node from a different parent', |
||||
|
referenceNode, |
||||
|
this, |
||||
|
); |
||||
|
} |
||||
|
return newNode; |
||||
|
} |
||||
|
return originalInsertBefore.apply(this, arguments); |
||||
|
}; |
||||
|
} |
Loading…
Reference in new issue