Aspnetcore: [Blazor] 使用 C# 直接操作 DOM

创建于 2019-01-22  ·  3评论  ·  资料来源: dotnet/aspnetcore

您的功能请求是否与问题有关? 请描述。

是否可以在不调用 javascript 函数的情况下直接从 C# 代码操作 DOM?

我想过这样的基础

var elem = document.getElementById("123");

elem.AddOrUpdateStyle("background-color", "red");
elem.AddOrUpdateStyle("height", "150px");
elem.Remove("height");

var boxes = document.getElementsByClassName("box");

foreach (var box in boxes)
{
   if (box.Classes.Contains("hidden"))
   {
      box.AddOrUpdateStyle("display", "none");
      continue;
   }

   box.Value = "";
   box.SetAttribute("placeholder", "Type here...");
}

它甚至可以实现吗?

area-blazor

最有用的评论

我认为这个问题应该重新打开。 Razor 组件应该具有这种能力,即使它是在引擎盖下使用 JS 互操作完成的。 ElementRef 应该扩展以支持最基本的 JS 功能。

所有3条评论

web程序集目前不支持DOM操作si(https://github.com/WebAssembly/proposals/issues/16,https://github.com/WebAssembly/design/blob/master/Web.md),所以它赢了很快就不会得到 mono wasm 的支持。 您只能使用 Blazor 的当前状态来做到这一点:自定义组件和 JS 互操作。

我认为这个问题应该重新打开。 Razor 组件应该具有这种能力,即使它是在引擎盖下使用 JS 互操作完成的。 ElementRef 应该扩展以支持最基本的 JS 功能。

直接 DOM 访问将是我尝试 Blazor 的原因。
这对于突破 Blazor 来说是强制性的。

此页面是否有帮助?
0 / 5 - 0 等级