Как динамически импортировать файлы JavaScript и CSS - PullRequest
1 голос
/ 20 марта 2010

Я хочу импортировать данный файл CSS или JavaScript в зависимости от некоторых условий, в моем сервлете у меня есть:


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

}

Мне нужно это поведение, так как у меня слишком много файлов для импорта, и имя файла можетварьируется в зависимости от состояния.Возможно ли это?

Ответы [ 3 ]

4 голосов
/ 20 марта 2010

Вроде да.

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. Я думаю, что это дает достаточно новых идей.

1 голос
/ 20 марта 2010

Вы пытаетесь вставить Javascript и CSS в дом? Я бы сделал это со стороны клиента. Я имею в виду, что возможно сделать это, явно написав код для <script...> или <link...>. Лучший способ сделать это - отправить клиенту что-нибудь, что скажет ему добавить таблицу стилей или Javascript.

Затем вы можете добавить его динамически следующим образом:

Если это не нужно делать динамически, тогда это еще проще. Просто установите флаг и в своем JSP или ASP проверьте состояние флага. Внутри условного тега вы добавите код для вашего CSS и Javascript. Однако, исходя из вашего вопроса, я предполагаю, что это первое.

0 голосов
/ 10 мая 2012
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. Передайте полный путь к файлу с именем в аргументе «имя файла».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...