17 lines
760 B
TypeScript
17 lines
760 B
TypeScript
import type { PageController } from '../PageController'
|
|
|
|
// Find common React root elements and add data-page-agent-not-interactive attribute
|
|
export function patchReact(pageController: PageController) {
|
|
const reactRootElements = document.querySelectorAll(
|
|
'[data-reactroot], [data-reactid], [data-react-checksum], #root, #app, [id^="root-"], [id^="app-"], #adex-wrapper, #adex-root'
|
|
)
|
|
|
|
for (const element of reactRootElements) {
|
|
element.setAttribute('data-page-agent-not-interactive', 'true')
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @todo (Heavy, might have false negatives) Interaction detection, if element width/height equals body offsetWidth/Height, consider it root element and non-interactive (React often attaches many events to root elements, causing false positives)
|
|
*/
|