关于vscode-resource和vscode-webview-resource

举报
Amrf 发表于 2020/08/21 15:57:00 2020/08/21
【摘要】 vscode-webview-resource:https://github.com/microsoft/vscode/pull/97777比较新的vscode版本已经不支持vscode-resource头了,或者这样说就算代码里还是使用的vscode-resource形式,新版的vscode在运行时会将vscode-resource头替换为vscode-webview-resource头;...

vscode-webview-resource:

https://github.com/microsoft/vscode/pull/97777

比较新的vscode版本已经不支持vscode-resource头了,或者这样说就算代码里还是使用的vscode-resource形式,

新版的vscode在运行时会将vscode-resource头替换为vscode-webview-resource头;

其自动替换逻辑如下:

image.png

如果原来vscode-resource:后面的路径是归一化的,这样没什么问题;

如果原来的vscode-resource后面的路径不是归一化的,包含../这样的结构,上面这个自动处理过后,会出现找不到资源的问题;

方案一:

private static buildPath(data: string, webview: vscode.Webview, contextPath: string): string {
    return data.replace(/((src|href)=("|'))(.+?\.(css|js))\b/gi, "$1" + vscode.Uri.file(`${contextPath}/`).with({ scheme: 'vscode-resource' }).toString() + "/$4");
}

=》

data.replace(/((src|href)=("|'))(.+?\.(css|js))\b/gi,function(m0,m1,m2,m3,m4,m5){
return m1+vscode.Uri.file(path.join(contextPath, m4)).with({ scheme: 'vscode-resource' }).toString()
});

方案二:

image.png

参考:

https://github.com/microsoft/vscode-extension-samples/blob/master/webview-sample/src/extension.ts



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。