@tomjs/create-app
Version:
Create a node/web/electron/vscode project based on tomjs
72 lines (59 loc) • 1.77 kB
text/typescript
import type { WebViewDialog, WebViewPanel } from 'hbuilderx';
import { getContext } from '@tomjs/hbuilderx';
import { window } from 'hbuilderx';
import { getWebviewHtml } from 'virtual:hbuilderx';
/**
* @description 显示webview
*/
function showWebView(webviewPanel: WebViewPanel | WebViewDialog) {
const webview = webviewPanel.webView;
webview.html = getWebviewHtml({
// dev server
serverUrl: process.env.VITE_DEV_SERVER_URL,
// build
context: getContext(),
injectCode: `<script>window.__FLAG1__=666;window.__FLAG2__=888;console.log(window.__FLAG1__);</script>`,
});
// 插件接收webview发送的消息(可以被JSON化的数据)
webview.onDidReceiveMessage((msg) => {
console.log('extension msg:', msg);
if (msg.command === 'alert') {
window.showInformationMessage(msg.text);
}
});
};
let leftWebviewPanel: WebViewPanel;
export function createLeftWebview() {
if (!leftWebviewPanel) {
leftWebviewPanel = window.createWebView('tomjs.webview.left', {
enableScripts: true,
});
}
showWebView(leftWebviewPanel);
window.showView({
containerId: 'tomjsActivitybar',
viewId: 'tomjs.webview.left',
});
};
let rightWebviewPanel: WebViewPanel;
export function createRightWebview() {
if (!rightWebviewPanel) {
rightWebviewPanel = window.createWebView('tomjs.webview.right', {
enableScripts: true,
});
}
showWebView(rightWebviewPanel);
window.showView({
containerId: 'tomjsRightSide',
viewId: 'tomjs.webview.right',
});
};
export function createDialogWebview() {
const dialogWebviewPanel = window.createWebViewDialog({
title: 'Dialog Webview',
}, {
enableScripts: true,
});
showWebView(dialogWebviewPanel);
dialogWebviewPanel.show();
};