Skip to content
MiTu

MiTu

A Web developer who loves to Reading and photography

与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);
});