我正在写一个使用VS代码的一个扩展的WebView API 。 我的扩展还注册了一个refresh preview
可更新的WebView内容的命令。 我怎样才能让这个:
该
refresh preview
命令仅在命令面板显示出来时,我的WebView集中?该
refresh preview
命令显示在网页视图的编辑器的标题栏?
我正在写一个使用VS代码的一个扩展的WebView API 。 我的扩展还注册了一个refresh preview
可更新的WebView内容的命令。 我怎样才能让这个:
该refresh preview
命令仅在命令面板显示出来时,我的WebView集中?
该refresh preview
命令显示在网页视图的编辑器的标题栏?
首先,创建一个自定义的背景下键 ,当你的WebView集中跟踪。 使用VS代码的setContext
命令,以使这种情况下,当你的WebView集中键轨道:
const myWebview = ...;
// Make the context key track when one of your webviews is focused
myWebview.onDidChangeViewState(({ webviewPanel }) => {
vscode.commands.executeCommand('setContext',
'myWebviewFocused',
webviewPanel.active);
});
然后用你的背景下关键的when
您的扩展的条款菜单的贡献分
为了与标识的命令myExtension.refreshPreview
,确保命令仅在当你的web视图集中,使用下面的贡献命令调色板显示出来:
{
"contributes": {
"menus": {
"commandPalette": [
{
"command": "myExtension.refreshPreview",
"when": "myWebviewFocused",
}
]
}
}
}
对于添加的命令(可能带有图标)的网页视图的编辑器标题栏,使用editor/title
贡献点:
{
"contributes": {
"menus": {
"editor/title": [
{
"command": "myExtension.refreshPreview",
"when": "myWebviewFocused",
}
]
}
}
}
退房VS代码的内置降价扩展为这个更高级的例子。