В классе WebView есть метод для отправки сообщений в контент WebView и событие для получения сообщений от этого. См. Главу в документации vscode о передаче сообщений .
В вашем коде веб-просмотра вы можете получать сообщения с:
// Handle the message inside the webview
window.addEventListener('message', event => {
const message = event.data; // The JSON data our extension sent
switch (message.command) {
case 'refactor':
count = Math.ceil(count * 0.5);
counter.textContent = count;
break;
}
});
В коде расширения вы можете обрабатывать сообщения из вашего веб-контента, например:
// Handle messages from the webview
panel.webview.onDidReceiveMessage(
message => {
switch (message.command) {
case 'alert':
vscode.window.showErrorMessage(message.text);
return;
}
},
undefined,
context.subscriptions
);
Чтобы отправить сообщение на добавочный номер, вам нужно использовать API vscode в коде веб-просмотра:
(function() {
const vscode = acquireVsCodeApi();
const counter = document.getElementById('lines-of-code-counter');
let count = 0;
setInterval(() => {
counter.textContent = count++;
// Alert the extension when our cat introduces a bug
if (Math.random() < 0.001 * count) {
vscode.postMessage({
command: 'alert',
text: '? on line ' + count
})
}
}, 100);
}())
И, наконец, отправка сообщения из расширения в контент веб-просмотра так же проста, как:
currentPanel.webview.postMessage({ command: 'refactor' });