【问题标题】:Is it possible to load JavaScript based on theme?是否可以基于主题加载 JavaScript?
【发布时间】:2012-05-29 14:09:51
【问题描述】:
我正在为一个有 3 个可用主题的客户开发一个网站。我正在使用 app_themes 系统使用户能够更改样式。每个主题使用几个不同的 JavaScript 文件来加载自定义字体。根据所选主题加载这些 JavaScript 文件的最佳方法是什么?
据我所知,Kentico 使用与默认 ASP.net 网络表单相同的应用主题系统。
理想情况下,我希望能够将适当的 JavaScript 文件添加到相应的 App_Theme 文件夹,并让 ASP 将标签添加到文档头。如果这不是一个选项,我考虑编写一个 ScriptLoader JavaScript,它将检查样式表标签以确定正在使用的主题。如果我可以将主题名称作为类属性添加到 body 元素上,然后查看并引入适当的脚本,那就更好了。
【问题讨论】:
标签:
asp.net
kentico
app-themes
【解决方案1】:
如果您不使用 Kentico,我想我找到了一个涉及制作 webPart 或控件的解决方案。
public static void AddScriptToHead(HtmlHead h, string script, bool AddScriptTags)
{
Literal l = new Literal();
if (AddScriptTags)
l.Text = "<script type=\"text/javascript\" src=\""
+ script +
"\"></script>";
else
l.Text = script;
h.Controls.Add(l);
}
protected void SetupControl()
{
if (this.StopProcessing)
{
// Do nothing
}
else
{
string theme = Page.Theme;
if (theme != null)
{
if (theme.Equals("Card"))
{
AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/cufon-colors-classic.js", true);
AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/Charis_SIL_700.font.js", true);
}
else if (theme.Equals("CardamonWave"))
{
AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/cufon-colors-wave.js" ,true);
AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/Lobster_14_400.font.js",true);
}
else if (theme.Equals("CardamonAncient"))
{
AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/cufon-colors-ancient.js", true);
AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/Charis_SIL_700.font.js", true);
}
else
{
//Y U no theme?
}
}
}
}
我想扩展它以在将来接受脚本和主题作为属性,但这现在可以工作。