我想写 'window.status="已完成"' 当 Blazor 页面在后面的代码中完全加载时。
我对 JS 了解很少。
答案 0 :(得分:1)
window.status
不再支持浏览器,已弃用,因此不应使用。
阅读以下链接中的弃用详细信息:
答案 1 :(得分:0)
Blazor为您提供了与DOM互动巨大的机遇,而在大多数情况下,JavaScript是不是必须的了。不幸的是,在你的情况,我们不能“达到”的窗口。它是在层次太高。我们需要使用JavaScript互操作。
的第一步是建立一个JavaScript文件和包括其作为一个index.html的链接,如果使用的是WASM或Host.cshtml用于服务器端Blazor。或者,可以在文档中嵌入它。
forPage
这是一个很好的做法,让您的脚本自己的命名空间。这是<script type="text/javascript">
myAppNamespace.setCompleteStatus= function (status) {
document.status = status;
};
</script>
在之前的例子中Blazor将需要这些信息来调用正确的函数。
在您的组件应该触发此操作中,注入的JavaScript互操作的服务。
myAppNamespace
每个Blazor组件具有与根据它的状态中执行不同方法的生命周期。所有的渲染完成后执行的方法@inject IJSRuntime jsruntime
。您可以覆盖它并执行你的JavaScript。
OnAfterRenderAsync
正如其名称所建议的 protected async override Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if(firstRender == true)
{
await jsruntime.InvokeVoidAsync("myAppNamespace.setCompleteStatus", "insert status here");
}
}
仅一旦组件被添加到DOM设置为true。如果你需要的状态多次改变,你可以删除的条件。请注意在这个方法调用变化firstRender
,以及