当页面加载完毕时,我尝试运行一个简单的javascript函数。本质上,代码所做的是获取当前的基本路径名,并找到具有相同id的navlink,并在其上添加一个类。Blazor的<NavLink/>对我来说还不够定制,我宁愿这样做。代码可以工作,但它只出现一小部分秒,然后消失,同时控制台中出现以下内容:
信息:连接到wss://localhost:44346/_blazor?id=IhkBuLdowknNbyGtvWjcVA.的WebSocket
这是我的_Host.cshtml页面:
<!DOCTYPE html>
<html lang="en">
<head>
<!--stuff-->
</head>
<body>
<app>
<component type="typeof(App)" render-mode="ServerPrerendered" />
<script> <!--this is the bit I added-->
var x = $(location).attr('pathname');
x.indexOf(1);
x = x.split("/")[1];
$('#' + x).addClass('onpage');
</script>
</app>
<div id="blazor-error-ui">
<environment include="Staging,Production">
An error has occurred. This application may no longer respond until reloaded.
</environment>
<environment include="Development">
An unhandled exception has occurred. See browser dev tools for details.
</environment>
<a href="" class="reload">Reload</a>
<a class="dismiss"></a>
</div>
<script src="_framework/blazor.server.js"></script>
</body>
</html>我对巴兹尔很陌生,所以我不知道是什么引起了这个问题。
发布于 2020-08-20 08:43:20
这是两个部分的答案-第一,回答你的问题,第二,向你展示一个更好的方式,我希望。
你的问题
Blazor在内部跟踪UI --就像影子域,但实际上不是这样--而且它无法跟踪您在JS中所做的更改。
当它呈现Nav时,它不知道您添加了那个css类,因此它被替换为Blazor所知道的css classList。
NavLink组件有一个属性调用ActiveClass -您可以设置它,当页面处于活动状态时,它将使用您自己的类名。
<NavLink class="nav-link" href="counter" ActiveClass="onpage">https://stackoverflow.com/questions/63500603
复制相似问题