mirror of
https://github.com/reactjs/react.dev.git
synced 2026-02-25 23:05:23 +00:00
Patch the DOM to fix Google Translate (#1148)
* Fix Google Translate * Tweaks
This commit is contained in:
45
src/utils/patchDOMForGoogleTranslate.js
Normal file
45
src/utils/patchDOMForGoogleTranslate.js
Normal file
@@ -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);
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user