我正在研究使用WebView
显示其他数据的VSCode扩展。除了webview图标,我的工作正常。
如果未指定任何内容,则图标为:
我在阅读文档时发现WebView
允许iconPath
选项具有以下格式:
我尝试使用以下代码添加图标:
const onDiskPath = vscode.Uri.file(
path.join(context.extensionPath, 'resources', 'my-icon.svg')
);
panel.iconPath = panel.webview.asWebviewUri(onDiskPath);
但是我遇到一个错误:
拒绝加载图像'vscode-resource:// file /// f:/dev/my-extension/resources/my-icon.svg',因为它违反了以下内容安全策略指令:“ img-src 'self'https:数据:blob:vscode-remote-resource:”。
在webview html中,以下内容策略可用:
<meta http-equiv="Content-Security-Policy"
content="default-src 'none'; img-src vscode-resource: https:; script-src 'nonce-${nonce}';">
(我尝试弄乱内容策略,但没有任何变化。显示相同的错误)
内容策略或图标路径的生成方式是否存在问题? (或完全不同的东西:))
答案 0 :(得分:1)
我认为您误解了“ Webview URI”的含义-它是针对在Webview中使用的资源。对于iconPath
,您需要常规文件URI,因此它应该很简单:
panel.iconPath = onDiskPath;