代码之家  ›  专栏  ›  技术社区  ›  marcosbeirigo

如何动态导入javascript和css文件

  •  1
  • marcosbeirigo  · 技术社区  · 15 年前

    我想导入一个给定的css或javascript文件,这取决于操作系统的某些条件,在我的servlet中我有:

    
    protected void doPost(...)
    {
       if(condition)
       {
         //import some javascript or css file here
       }
    
    }
    
    

    我需要这种行为,因为我有太多的文件要导入,文件名可能因条件而异。 有可能吗?

    3 回复  |  直到 13 年前
        1
  •  4
  •   BalusC    15 年前

    有点,是的。

    boolean condition = evaluateItSomehow();
    request.setAttribute("condition", condition);
    request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
    

    然后在 page.jsp 使用 JSTL c:if :

    <head>
        <c:if test="${condition}">
            <link rel="stylesheet" type="text/css" href="style.css">
            <script type="text/javascript" src="script.js"></script>
        </c:if>
        ...
    </head>
    

    更新: 由于您似乎有多个文件可用于此目的,您甚至可以通过设置所需的文件名后缀(或前缀,甚至整个名称,您喜欢的内容)使其更加灵活:

    String suffix = evaluateItSomehow();
    request.setAttribute("suffix", suffix);
    request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
    

    <head>
        <link rel="stylesheet" type="text/css" href="style_${suffix}.css">
        <script type="text/javascript" src="script_${suffix}.js"></script>
        ...
    </head>
    

    如果你准备好了 suffix 例如到 "foo" ,这将加载 style_foo.css script_foo.js . 我认为这给了我们足够的新见解。

        2
  •  1
  •   Vivin Paliath    15 年前

    是否尝试将javascript和css插入到DOM中?我会从客户那方面去做。我是说,是的 可能的 通过显式写出 <script...> <link...> . 一个更好的方法是将消息发送回客户机,让客户机添加样式表或JavaScript。

    然后您可以像这样动态地添加它:

    如果这不需要动态地完成,那么就更容易了。只需设置一个标志,在JSP或ASP中,检查该标志的状态。在条件标记中,您将添加CSS和JavaScript的代码。不过,我从你的问题上假定,这是前者。

        3
  •  0
  •   Talha    13 年前
    function loadjscssfile(filename, filetype) {
                if (filetype == "js") { //if filename is a external JavaScript file
                   // alert('called');
                    var fileref = document.createElement('script')
                    fileref.setAttribute("type", "text/javascript")
                    fileref.setAttribute("src", filename)
                    alert('called');
                }
                else if (filetype == "css") { //if filename is an external CSS file
                    var fileref = document.createElement("link")
                    fileref.setAttribute("rel", "stylesheet")
                    fileref.setAttribute("type", "text/css")
                    fileref.setAttribute("href", filename)
                }
                if (typeof fileref != "undefined")
                    document.getElementsByTagName("head")[0].appendChild(fileref)
            }
    

    调用此javascript函数动态加载css和js文件。在文件名参数中传递名为的完整文件路径。