Установить отображаемое свойство для ресурса CSS из темы на основе некоторого условия CSJS?

Есть ли способ вычислить отображаемое свойство на основе некоторого условия JavaScript?

Например:

если document.compactMode == "BackCompat"

Все примеры я нахожу; используйте SSJS #{javascript:условие;}

Например:

<resource rendered="#{javascript:context.getUserAgent().isIE(0,6)}">
    <content-type>text/css</content-type>
    <href>global.css</href>
</resource>

Как это можно смешать примерно так:

<![CDATA[return document.compactMode == "BackCompat"? true: false;]]>

person PSolano    schedule 03.04.2013    source источник


Ответы (2)


Вы не можете использовать CSJS для вычисления чего-либо на стороне сервера. Это концептуально невозможно, потому что CSJS выполняется в браузере, а темы рассчитываются на сервере.

Что вы можете сделать: выполнить несколько CSJS и отправить результат на сервер. Затем на сервере вы можете обработать эти данные и выполнить вычисления для свойств темы.

Ф.э. вы можете открыть целевую страницу, выполнить свой CSJS, а затем перенаправить на целевую XPage с некоторыми параметрами URL или файлом cookie или... Затем вы можете получить доступ к данным на стороне сервера.

<resource rendered='#{javascript:context.getUrlParameter("CSJS") == "1"}'>
   <content-type>text/css</content-type>
   <href>global.css</href>
</resource>

Если вы откроете XPage с URL-адресом ?CSJS=1, будет добавлен global.css.

person Sven Hasselbach    schedule 03.04.2013

Возможно, было бы разумнее изменить ваш CSS так, чтобы один файл CSS работал с несколькими браузерами? Например, см. http://webdesignerwall.com/tutorials/css-specific-for-internet-explorer

person David Navarre    schedule 03.04.2013
comment
Спасибо @David, я тоже пробовал это, просто в моем случае это не только основано на версии IE; Я хочу загрузить файл css, если браузер находится в QuirksMode. - person PSolano; 04.04.2013