Actualmente estoy trabajando en una extensión de Chrome y quiero que funcione en Google Docs para resaltar el texto. Google docs se está moviendo a la representación de Canvas para páginas, lo que básicamente elimina todo el texto del DOM y solo tenemos un elemento de canvas
en el DOM para cada página.
He notado que al configurar window._docs_force_html_by_ext = <extension-id>
en la página web de Google docs, podemos forzarlo a representar DOM como HTML, no como lienzo. Esto funciona bien para mi. También he visto algunas extensiones configuradas window._docs_annotate_canvas_by_ext = <extension-id>
y eso asegura que el lienzo representado esté anotado con muchos elementos DOM dentro del elemento del lienzo. Este lienzo anotado permite cálculos posicionales para el texto.
He intentado insertar el script de la misma manera pero no parece tener ningún efecto en el DOM. ¿Hay algo más que deba hacer?
Cualquier ayuda es muy apreciada. Gracias por adelantado.
En el momento actual, la opción HTML Fallback aparecerá antes que la opción Anotated Canvas. Esto significa que si tiene alguna extensión en ejecución que fuerce la opción HTML Fallback, entonces la opción Anotated Canvas no se procesará.
Esta es una mala noticia para aquellos que tienen una integración en ejecución con la opción Lienzo anotado porque cualquier otra aplicación instalada podría obligar al script a volver a la opción HTML Fallback.
Personalmente, aplico una verificación simple y manejo ambas soluciones en función de lo que devuelve el documento:
const runInitializers = (): void => { const canvasFirstPage = document.querySelector( '#kix-appview > div.kix-appview-editor-container > div > div:nth-child(1) > div.kix-rotatingtilemanager.docs-ui-hit-region-surface > div > div.kix-page-paginated.canvas-first-page' ); const fallbackFirstPage = document.querySelector( '#kix-appview > div.kix-appview-editor-container > div > div:nth-child(1) > div.kix-zoomdocumentplugin-outer > div > div > div > div:nth-child(2) > div' ); if (canvasFirstPage) { initAnnotatedCanvas(); } else if (fallbackFirstPage) { initHTMLFallback(); } };