与html交互
创建一个webview panel
panel = vscode.window.createWebviewPanel
内容
panel.webview.html = getWebviewContent();
ts
function getWebviewContent() {
return `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>test webview</title>
</head>
<body>
<p id="test">init</p>
<button type="button" onclick='sendMessage()' >发1送消息</button>
<script>
(function(){
window.addEventListener('message', e => {
document.getElementById('test').innerHTML = e.data.text;
});
}())
function sendMessage(){
document.getElementById('test').innerHTML = "new";
const vscode = acquireVsCodeApi();
vscode.postMessage({
text: "from html:hello webview"
});
}
</script>
</body>
</html>`;
}接收和发送消息
html
js
//等待vscode发送消息
window.addEventListener('message', e => {
document.getElementById('test').innerHTML = e.data.text;
});
//发送消息
const vscode = acquireVsCodeApi();
vscode.postMessage({
text: "from html:hello webview"
});vscode
ts
//发送消息给页面
panel.webview.postMessage({ text: 'I\'m from vscode and config workTime:'+workTime });
//等待html发送消息
panel.webview.onDidReceiveMessage(data => {
vscode.window.showInformationMessage(data.text);
});