【问题标题】:How to get cursor position in a Chrome DevTools source editor from extension?如何从扩展获取 Chrome DevTools 源代码编辑器中的光标位置?
【发布时间】:2017-12-21 21:50:09
【问题描述】:

我为 Google Chrome DevTools 开发了Open in Editor 扩展,允许使用上下文菜单在外部编辑器中打开源文件。

当在 UI 中定位文件时,它在大多数情况下(网络面板性能面板样式检查器等)都能完美运行包含行号(如jquery.js:2191)。
唯一的例外是来源面板chrome.devtools.panels.setOpenResourceHandler 回调函数不接收行号。

DevTools 是否有一些 API 可以从 setOpenResourceHandler() 回调中获取源代码编辑器中的光标位置?

【问题讨论】:

标签: javascript google-chrome google-chrome-extension google-chrome-devtools


【解决方案1】:

这已根据报告的Chrome Issue 747888进行了解释:

首先,setOpenResourceHandle() 适用于用户单击链接(例如控制台中的linkified 位置)通常会导致在 DevTools 中打开源选项卡的情况,它并不意味着当文件在源面板中显式打开。对于源选项卡中文件/位置的更改,我们有最近由 @jacobr 带回的chrome.devtools.panels.sources.onSelectionChanged(参见layout test 的用法示例)。

这里是提到的代码示例:

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);
    });
}

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多