Skip to content

Commit 7209d49

Browse files
[release/6.0] Backport 'Make title prerendering not interfere with svg titles' (#44343)
* Make title prerendering not interfere with svg titles. Fixes #36380. (#37009) * Update blazor.*.js Co-authored-by: Steve Sanderson <[email protected]>
1 parent 538d902 commit 7209d49

File tree

5 files changed

+14
-3
lines changed

5 files changed

+14
-3
lines changed

src/Components/Web.JS/dist/Release/blazor.server.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Components/Web.JS/dist/Release/blazor.webview.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Components/Web.JS/src/PageTitle.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ export const PageTitle = {
55
};
66

77
function getAndRemoveExistingTitle(): string | null {
8-
const titleElements = document.getElementsByTagName('title');
8+
// Other <title> elements may exist outside <head> (e.g., inside <svg> elements) but they aren't page titles
9+
const titleElements = document.head ? document.head.getElementsByTagName('title') : [];
910

1011
if (titleElements.length === 0) {
1112
return null;

src/Components/test/E2ETest/ServerExecutionTests/HeadModificationPrerenderingTest.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ public void CanModifyHeadDuringAndAfterPrerendering()
3636
Browser.Equal("Title 1", () => Browser.Title);
3737
Browser.Exists(By.Id("meta-description"));
3838

39+
// Check that unrelated <title> elements were left alone
40+
Browser.Equal("This element is used to test that PageTitle prerendering doesn't interfere with non-head title elements.",
41+
() => Browser.Exists(By.CssSelector("#svg-for-title-prerendering-test title")).Text);
42+
3943
var titleText1 = Browser.FindElement(By.Id("title-text-1"));
4044
titleText1.Clear();
4145
titleText1.SendKeys("Updated title 1\n");

src/Components/test/testassets/TestServer/Pages/DeferredComponentContentLayout.cshtml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,11 @@
3434
});
3535
}
3636
</script>
37+
38+
<svg id="svg-for-title-prerendering-test" viewBox="0 0 20 10" xmlns="http://www.w3.org/2000/svg" style="width: 1px; height: 1px;">
39+
<rect x="11" y="1" width="8" height="8">
40+
<title>This element is used to test that PageTitle prerendering doesn't interfere with non-head title elements.</title>
41+
</rect>
42+
</svg>
3743
</body>
3844
</html>

0 commit comments

Comments
 (0)