Go to file
Steve Sanderson fc1ebaaaa6
Make link click interception work with elements inside open shadow roots. Fixes #27070 (#27587)
Description
HTML <a> elements within shadow roots are invisible to the link click interception code. So when an end user clicks on a link that's inside the shadow root of a custom element, it triggers a full page load instead of a client-side navigation.

Customer Impact
Reported by a customer at #27070. There's no reasonable workaround (besides not using custom elements and shadow DOM).

The impact is that if you're using a library of custom HTML elements, which typically use ShadowDOM to render, then if you use them to produce any links, then those links will seem broken to the end user (as in, they trigger a full-page reload, destroying any app state in WebAssembly memory or discarding the Blazor Server circuit).

Regression?
No, this has always been the case. However, the use of custom elements and ShadowDOM is a growing area, especially as we try to guide customers to use custom elements like the FAST components.

The fact that this use case is growing in importance makes it relevant to consider patching rather than waiting a full year for 6.0.

We don't have to ship this in 5.0.1, but we should be prepared to ship it in a patch reasonably soon.

Risk
This changes the logic for processing clicks on all links, not just the ones in shadow roots. Although I'm not aware of any cases where the new logic might fail, and all our E2E tests pass, maybe I missed some case. It's unfortunate we don't have any opportunity to put this in front of customers any any preview form.
2020-11-13 12:29:13 -08:00
.azure/pipelines Don't push to VS feed when post build sign == true (#27265) 2020-11-10 12:35:49 -08:00
.config Update dependencies from https://github.com/dotnet/efcore build 20201110.8 (#27708) 2020-11-11 06:20:15 +00:00
.github
.vscode
docs
eng [release/5.0] Update dependencies from dotnet/efcore (#27789) 2020-11-13 18:50:44 +00:00
src Make link click interception work with elements inside open shadow roots. Fixes #27070 (#27587) 2020-11-13 12:29:13 -08:00
.editorconfig
.gitattributes
.gitignore
.gitmodules
.vsconfig
AspNetCore.sln
CODE-OF-CONDUCT.md
CONTRIBUTING.md
Directory.Build.props [release/5.0] Update API baseline files (#27653) 2020-11-12 10:28:52 -08:00
Directory.Build.targets [release/5.0] Update API baseline files (#27653) 2020-11-12 10:28:52 -08:00
LICENSE.txt
NuGet.config [release/5.0] Update dependencies from dotnet/efcore (#27789) 2020-11-13 18:50:44 +00:00
README.md
SECURITY.md
THIRD-PARTY-NOTICES.txt
activate.ps1
activate.sh
build.cmd
build.ps1
build.sh
clean.cmd
clean.ps1
clean.sh
dockerbuild.sh
global.json [release/5.0] Update dependencies from dotnet/arcade (#27683) 2020-11-12 19:46:20 +00:00
restore.cmd
restore.sh
startvs.cmd

README.md

ASP.NET Core

ASP.NET Core is an open-source and cross-platform framework for building modern cloud based internet connected applications, such as web apps, IoT apps and mobile backends. ASP.NET Core apps run on .NET Core, a free, cross-platform and open-source application runtime. It was architected to provide an optimized development framework for apps that are deployed to the cloud or run on-premises. It consists of modular components with minimal overhead, so you retain flexibility while constructing your solutions. You can develop and run your ASP.NET Core apps cross-platform on Windows, Mac and Linux. Learn more about ASP.NET Core.

Get Started

Follow the Getting Started instructions in the ASP.NET Core docs.

Also check out the .NET Homepage for released versions of .NET, getting started guides, and learning resources.

See the Triage Process document for more information on how we handle incoming issues.

How to Engage, Contribute, and Give Feedback

Some of the best ways to contribute are to try things out, file issues, join in design conversations, and make pull-requests.

Reporting security issues and bugs

Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) secure@microsoft.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the Security TechCenter.

These are some other repos for related projects:

Code of conduct

See CODE-OF-CONDUCT