Update extension.js
This commit is contained in:
parent
7a7efd9db6
commit
4f0fa3603f
|
@ -24,7 +24,26 @@ class ErikrafTDropViewProvider {
|
|||
};
|
||||
|
||||
webviewView.webview.html = this.getWebviewContent(webviewView.webview);
|
||||
// Listen for messages from the webview
|
||||
handleWebviewMessages(webviewView.webview);
|
||||
}
|
||||
}
|
||||
|
||||
// Função para lidar com mensagens do webview
|
||||
function handleWebviewMessages(webview) {
|
||||
webview.onDidReceiveMessage(async (message) => {
|
||||
if (message && message.type && message.url) {
|
||||
if (message.type === 'external-link' || message.type === 'download') {
|
||||
try {
|
||||
await vscode.env.openExternal(vscode.Uri.parse(message.url));
|
||||
} catch (err) {
|
||||
vscode.window.showErrorMessage('Não foi possível abrir o link externo: ' + message.url);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
getWebviewContent(webview) {
|
||||
return `
|
||||
|
@ -67,10 +86,27 @@ class ErikrafTDropViewProvider {
|
|||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
></iframe>
|
||||
<script>
|
||||
// Handle external links from iframe
|
||||
const vscode = acquireVsCodeApi();
|
||||
|
||||
// Listen for messages coming from any embedded iframe (cross-origin)
|
||||
window.addEventListener('message', (event) => {
|
||||
if (event.data.type === 'external-link') {
|
||||
parent.postMessage({ type: 'external-link', url: event.data.url }, '*');
|
||||
if (event.data && (event.data.type === 'external-link' || event.data.type === 'download')) {
|
||||
vscode.postMessage(event.data);
|
||||
}
|
||||
});
|
||||
|
||||
// Intercept clicks inside the webview itself
|
||||
document.addEventListener('click', (event) => {
|
||||
const link = event.target.closest('a');
|
||||
if (link && link.href.startsWith('http')) {
|
||||
event.preventDefault();
|
||||
vscode.postMessage({ type: 'external-link', url: link.href });
|
||||
return;
|
||||
}
|
||||
const downloadLink = event.target.closest('a[download]');
|
||||
if (downloadLink) {
|
||||
event.preventDefault();
|
||||
vscode.postMessage({ type: 'download', url: downloadLink.href });
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
|
Loading…
Reference in New Issue