tools other google extension developer depurar debug chrome breakpoint javascript google-chrome google-chrome-extension google-chrome-devtools

javascript - other - ¿Cómo obtener la posición del cursor en un editor de código fuente de Chrome DevTools desde la extensión?



google console chrome (1)

Desarrollé la extensión Open in Editor para Google Chrome DevTools que permite abrir archivos de código fuente en un editor externo utilizando el menú contextual.

Funciona perfectamente en la mayoría de los casos ( panel de red , panel de rendimiento , inspector de estilo , etc.) cuando la ubicación del archivo en la interfaz de usuario contiene un número de línea (como jquery.js:2191 ).
La única excepción es el panel de Fuentes . Una función de devolución de llamada chrome.devtools.panels.setOpenResourceHandler no recibe un número de línea.

¿DevTools tiene alguna API para obtener una posición de cursor en el editor de setOpenResourceHandler() devolución de llamada setOpenResourceHandler() ?


Esto se ha explicado de acuerdo con el bugs.chromium.org/p/chromium/issues/detail?id=747888 :

Por lo tanto, en primer lugar, setOpenResourceHandle() es para los casos en que los usuarios hacen clic en un enlace (por ejemplo, una ubicación de linkified en la consola) que normalmente abre una pestaña de origen en DevTools, no está destinado a ser activado cuando un archivo se abre explícitamente en el panel fuente Para los cambios del archivo / posición dentro de la pestaña de fuentes, tenemos chrome.devtools.panels.sources.onSelectionChanged (ver una prueba de diseño para el uso de ejemplo) que fue recientemente recuperado por @jacobr ).

Aquí está el ejemplo de código mencionado:

function extension_testElementsOnSelectionChanged(nextTest) { function onSelectionChanged() { webInspector.panels.elements.onSelectionChanged.removeListener(onSelectionChanged); output("onSelectionChanged fired"); nextTest(); } webInspector.panels.elements.onSelectionChanged.addListener(onSelectionChanged); webInspector.inspectedWindow.eval("inspect(document.body.children[0]), 0"); } function extension_testSourcesOnSelectionChangedShowFile(nextTest) { function onSelectionChanged(selectionInfo) { webInspector.panels.sources.onSelectionChanged.removeListener(onSelectionChanged); output("sources onSelectionChanged fired, selectionInfo:"); dumpObject(selectionInfo, {url: "url"}); nextTest(); } webInspector.panels.sources.onSelectionChanged.addListener(onSelectionChanged); evaluateOnFrontend("InspectorTest.showScriptSource(/"test-script.js/")"); } function extension_testSourcesOnSelectionChangedShowFileAndLine(nextTest) { webInspector.inspectedWindow.eval("location.href", function(inspectedPageURL) { function onSelectionChanged(selectionInfo) { webInspector.panels.sources.onSelectionChanged.removeListener(onSelectionChanged); output("sources onSelectionChanged fired, selectionInfo:"); dumpObject(selectionInfo, {url: "url"}); nextTest(); } webInspector.panels.sources.onSelectionChanged.addListener(onSelectionChanged); var basePath = inspectedPageURL.replace(///[^/]*$/, "/"); webInspector.panels.openResource(basePath + "resources/test-script.js", 2); }); }