如何动态导入javascript和css文件

如何动态导入javascript和css文件,java,javascript,css,jsp,servlets,Java,Javascript,Css,Jsp,Servlets,我想根据某些条件导入给定的css或javascript文件,在我的Servlet中,我有: protected void doPost(...) { if(condition) { //import some javascript or css file here } } 我需要这种行为,因为我有太多的文件要导入,文件名可能会根据情况而变化。 有可能吗?您是否正在尝试将Javascript和CSS插入dom?我会从客户的角度去做。我的意思是,可以通过显式地写出或

我想根据某些条件导入给定的css或javascript文件,在我的Servlet中,我有:


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

}
我需要这种行为,因为我有太多的文件要导入,文件名可能会根据情况而变化。
有可能吗?

您是否正在尝试将Javascript和CSS插入dom?我会从客户的角度去做。我的意思是,可以通过显式地写出
的代码来实现。一个更好的方法是将一些东西发送回客户端,告诉它添加样式表或Javascript

然后您可以动态添加它,如下所示:


如果这不需要动态完成,那么就更容易了。只需设置一个标志,然后在JSP或ASP中检查标志的状态。在条件标记中,您将为CSS和Javascript添加代码。但是,根据您的问题,我假设它是前者。

您是否试图将Javascript和CSS插入dom?我会从客户的角度去做。我的意思是,可以通过显式地写出
的代码来实现。一个更好的方法是将一些东西发送回客户端,告诉它添加样式表或Javascript

然后您可以动态添加它,如下所示:

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

有点,是的

boolean condition = evaluateItSomehow();
request.setAttribute("condition", condition);
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
然后在
page.jsp
中使用
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>


...
如果将
后缀设置为例如
“foo”
,这将加载
样式\u foo.css
脚本\u foo.js
。我认为这提供了足够的新见解。

是的

boolean condition = evaluateItSomehow();
request.setAttribute("condition", condition);
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
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)
        }
然后在
page.jsp
中使用
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>


...
如果将
后缀设置为例如
“foo”
,这将加载
样式\u foo.css
脚本\u foo.js
。我认为这提供了足够的新见解

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文件。在“filename”参数中传递名为的完整文件路径

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

hello:)使用此方法时,bwoser缓存是否有任何问题?如果我想加载相同的页面,在不同的条件下,使用多种css?客户端浏览器是否会缓存css?您好:)使用此方法时,bwoser缓存是否有任何问题?如果我想加载相同的页面,在不同的条件下,使用多种css?客户端浏览器会缓存css吗?