迁移代码片段后无法打开 DevTools

问题描述 投票:0回答:2

我认为我在从另一个配置文件迁移代码片段时损坏了 Edge(当前版本 103)中的主配置文件。我使用

InspectorFrontendHost.getPreferences / setPreference
来迁移我的代码片段,它似乎工作正常。

但是,DevTools 将无法使用 F12、CTRL-SHFT-i 或右键单击重新打开。 我可以看到浏览器任务管理器中出现 DevTools 选项卡,但没有出现任何窗口或选项卡。

DevTools 在我的其他配置文件中的同一台计算机上运行良好,即使我同时在不同窗口中打开两个配置文件。

我可以强制重置 Edge 配置文件中存储片段的部分而不丢失配置文件的其余部分吗?我使用的是工作机器,因此无法获得更高的权限。 谢谢你

microsoft-edge devtools
2个回答
0
投票

不幸的是,我无法重现这个问题。我尝试了相同的功能来导出/导入片段,但我的开发工具仍然成功启动。由于开发工具选项卡位于浏览器任务管理器中,因此您可以双击该选项卡以查看它是否只是无意中最小化。

但恐怕您不能只重置 Edge 配置文件中存储片段的部分。我建议您重置浏览器看看是否有效。您可以进入设置 --> 重置设置 --> 将设置恢复为默认值。

顺便说一下,您的代码片段位于您的个人资料路径下的“首选项”文件中。您可以前往edge://version 找到您的个人资料路径。


0
投票

我有同样的问题(即使浏览器重新启动后我也无法打开开发工具)。原因是我首先为首选项设置了错误的值(而不是包含 json 的字符串 - 我将其包装到另一个字符串文字 - 字符串长度约为 127kb)。也许是因为字符串的长度,因为浏览器将其解析为由一个长字符串文字组成的 json 。我通过

完成了
InspectorFrontendHost.setPreference("scriptSnippets",JSON.stringify(text)

要解决问题 - 您需要:

  1. 退出浏览器(因为浏览器不断使用首选项重写文件)
  2. 手动修复名称为首选项的文件 - 实际上是 json 文件,尽管扩展名不存在。您可以只清除属性“scriptSnippets”的值(设置空字符串文字“”)

要查找文件的路径,请使用下面的 url 并找到行 配置文件路径

chrome://version

以防万一一些片段

如果您想将所有片段下载为 json 文件:

// get string in json format of all snippets
InspectorFrontendHost.getPreferences(preferencesList=>{window.snippets_json = preferencesList.scriptSnippets});
// make blob from json
const snippets_blob = new Blob([window.snippets_json],{type:'application/json'});

function saveBlobToFile(blob, filename) {
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = filename;
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
    URL.revokeObjectURL(url);
}

saveBlobToFile(snippets_blob, `snippets_from_chrome_${new Date().toLocaleDateString().replaceAll('/','_')}.json`)

要从 json 文件上传片段,请使用:

const input = document.createElement('input');
input.type = 'file';
input.style = 'position: fixed; z-index: 100;';
document.body.prepend(input); // input will appear at initial devtool window that was opened first

input.addEventListener('change',function (event) {
    const file = event.target.files[0];
    file.text().then(text=>{
        InspectorFrontendHost.setPreference("scriptSnippets",text);
    })
})
© www.soinside.com 2019 - 2024. All rights reserved.