Как вы передаете параметры перед загрузкой HTML веб-просмотра? - PullRequest
1 голос
/ 29 октября 2019
private _updateForCat(webview: vscode.Webview, catName: keyof typeof cats) {
    this._panel.title = catName;
    this._panel.webview.html = this._getHtmlForWebview(webview, cats[catName]);
}

private _getHtmlForWebview(webview: vscode.Webview, catGifPath: string) {
    // Local path to main script run in the webview
    const scriptPathOnDisk = vscode.Uri.file(
        path.join(this._extensionPath, 'media', 'main.js')
    );

    // And the uri we use to load this script in the webview
    const scriptUri = webview.asWebviewUri(scriptPathOnDisk);

    // Use a nonce to whitelist which scripts can be run
    const nonce = getNonce();

    return `<!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">

            <!--
            Use a content security policy to only allow loading images from https or from our extension directory,
            and only allow scripts that have a specific nonce.
            -->
            <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src ${webview.cspSource} https:; script-src 'nonce-${nonce}';">

            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Cat Coding</title>
        </head>
        <body>
            <img src="${catGifPath}" width="300" />
            <h1 id="lines-of-code-counter">0</h1>

            <script nonce="${nonce}" src="${scriptUri}"></script>
        </body>
        </html>`;
}

Глядя на официальный экземпляр WebView выше, он просто загружает файл HTML. То есть реализации маршрутизации нет. Обычные веб-проекты имеют унифицированную запись и затем отображают различные страницы DOM с помощью параметров GET.

Можно ли отобразить страницу с пользовательскими параметрами, как показано в приведенном ниже URL-адресе?

https://www.google.com?para1=xx&para2=xx
...