Blazor中打开一个新页面的最好方法

发布时间 2023-05-05 23:19:42作者: Yu-Core

适用于Blazor Wasm和Blazor SSR

调用下面的js方法
说一下为什么不用window.open,有可能被拦截是小问题,大问题是打开新页面未加载完时,回到原页面,大概率卡死,无法点击任何东西,只有f12之后才恢复回来。
而用创建a标签就不会有这种问题。

// 创建超链接,不会被拦截
function openBrowserUrl(url, id) {
    let a = document.createElement("a");
    a.setAttribute("href", url);
    a.setAttribute("target", "_blank");
    a.setAttribute("id", id);
    // 防止反复添加      
    if (!document.getElementById(id)) {
        document.body.appendChild(a);
    }
    a.click();
}

适用于Maui Blazor

看微软文档就可以了
https://learn.microsoft.com/zh-cn/dotnet/maui/platform-integration/appmodel/open-browser?view=net-maui-7.0&tabs=android#open-the-browser

适用于 Winform Blazor和WPF Blazor

直接用Process.Start(url)是无效的,还是下面这种方法,调用cmd更好

Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true });