是否可以根据主题加载JavaScript?

时间:2012-05-29 14:09:51

标签: asp.net kentico app-themes

我正在为有3个主题的客户开发网站。我正在使用app_themes系统来让用户更改样式。每个主题使用一些不同的JavaScript文件来加载自定义字体。根据所选主题加载这些JavaScript文件的最佳方法是什么?

据我所知,Kentico使用与默认ASP.net webforms相同的应用主题系统。

理想情况下,我希望能够将相应的JavaScript文件添加到相应的App_Theme文件夹中,并让ASP将标记添加到文档头。如果这不是一个选项,我考虑编写一个ScriptLoader JavaScript,它将检查样式表标签以确定正在使用哪个主题。如果我可以在主体元素上添加主题名称作为类属性并且只需查看它并引入适当的脚本,那就更好了。

1 个答案:

答案 0 :(得分:0)

我认为如果你没有使用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?
            }
        }

    }
}

我想将此扩展为接受脚本和主题作为未来的属性,但这将暂时有用。