【发布时间】:2020-05-20 16:13:51
【问题描述】:
我是 Blazor 的新手,我创建了一个非常简单的 Webassembly 应用程序。当我点击它时,我想要一个 href 链接转到页面下方的 div,但 Javascript 点击事件不起作用。在 Index.razor 页面中,JsRuntime.InvokeVoidAsync("clicker") 正在工作,alert("In clicker") 在页面加载时发生,但点击/href 进入“intro”div 对爱情和金钱都不起作用:-/
index.html
<!DOCTYPE html>
<html>
<head>
<title>My Blazor App</title>
<!--script type='text/javascript' src='./scripts/app.js'-->
</head>
<body>
<app>Loading...</app>
<script src="_framework/blazor.webassembly.js"></script>
<script>
function clicker() {
alert("In clicker"); // this works
document.getElementById('skip').onclick = function(e){
alert("clicked"); // this works but the page still won't scroll to the "intro" div :(
}
}
//clicker();
</script>
</body>
</html>
Index.razor(@code 部分位于页面顶部)
@page "/"
@code {
[Inject]
protected IJSRuntime JsRuntime { get; set; }
protected override void OnAfterRender(bool firstRender)
{
if (firstRender)
{
JsRuntime.InvokeVoidAsync("clicker");
}
}
}
// This link won't go to the intro div when clicked :(
<a id="skip" class="skip" href="#intro">skip this bit</a>
...
<div id="intro" class="home">
...
</div>
Startup.cs
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IComponentsApplicationBuilder app)
{
app.AddComponent<App>("app");
}
}
如果有人能对此有所了解,那将节省我的一周时间。
【问题讨论】:
-
我很困惑。您的点击事件在 div 上,但听起来您正试图点击链接来触发它?你能澄清一下吗?
-
嗨@Kyle,点击是在''元素上,点击时它应该链接到带有“intro”id的div。这有意义吗?
-
哇。有人实际上在使用 Blazor。
-
我也有这个问题,看看下面的解决方案是否有效
标签: javascript asp.net-core blazor blazor-client-side