diff --git a/Oqtane.Client/UI/ThemeBuilder.razor b/Oqtane.Client/UI/ThemeBuilder.razor
index c3d0453b..c215e3ff 100644
--- a/Oqtane.Client/UI/ThemeBuilder.razor
+++ b/Oqtane.Client/UI/ThemeBuilder.razor
@@ -42,16 +42,17 @@
foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Stylesheet))
{
var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + resource.Url;
- headcontent += CreateLink(url, resource.Integrity, resource.CrossOrigin) + "\n";
+ headcontent += "" + "\n";
}
// head content
+ AddHeadContent(headcontent, PageState.Site.HeadContent);
if (!string.IsNullOrEmpty(PageState.Site.HeadContent))
{
- headcontent += PageState.Site.HeadContent + "\n";
+ headcontent = AddHeadContent(headcontent, PageState.Site.HeadContent);
}
if (!string.IsNullOrEmpty(PageState.Page.HeadContent))
{
- headcontent += PageState.Page.HeadContent + "\n";
+ headcontent = AddHeadContent(headcontent, PageState.Page.HeadContent);
}
SiteState.Properties.HeadContent = headcontent;
@@ -63,9 +64,21 @@
};
}
- private string CreateLink(string url, string integrity, string crossorigin)
+ private string AddHeadContent(string headcontent, string content)
{
- return "";
+ // format head content, remove scripts, and filter duplicate elements
+ var elements = (">" + content.Replace("\n", "") + "<").Split("><");
+ foreach (var element in elements)
+ {
+ if (!string.IsNullOrEmpty(element) && !element.Contains("script"))
+ {
+ if (!headcontent.Contains("<" + element + ">"))
+ {
+ headcontent += "<" + element + ">" + "\n";
+ }
+ }
+ }
+ return headcontent;
}
protected override async Task OnAfterRenderAsync(bool firstRender)