JavaScript включен? - PullRequest
       1

JavaScript включен?

0 голосов
/ 09 ноября 2010

Мне нужно сделать форк (в зависимости от того, включен JavaScript или нет):

<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no" encoding="windows-1251"/>
<xsl:template match="someNode">
    <xsl:variable name="vNoscript">
        <noscript>true</noscript>
    </xsl:variable>

    <xsl:choose>
        <!-- javascript disabled -->
        <xsl:when test="$vNoscript = 'true'">
            code branch 1
        </xsl:when>
        <!-- javascript enabled -->
        <xsl:otherwise>
            code branch 2           
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>
</xsl:stylesheet>

Этот код не работает должным образом - переменная vNoscript в любом случае содержит значение "true".

Какими способами можно решить проблему?

Может быть необходимо сделать такие тесты совсем по-другому?

Обновление 1: Я запускаю этот код на сервере.

Обновление 2: Мне нужно динамически загружать картинки на страницу (используя JavaScript). Для тех, кто отключил Javascript в браузере, мне нужно загружать картинки «как обычно».

1 Ответ

1 голос
/ 09 ноября 2010

Поскольку вы запускаете этот код на сервере, вы не можете знать, включен ли на клиенте JavaScript или нет.

Один из способов обойти эту проблему - использовать параметр запроса HTTP, сообщающий вам, генерировать ливерсия вашей страницы с поддержкой JavaScript или нет, и клиент решает, какую версию вызвать:

<script type="text/javascript">
 document.write("<a href='http://www.example.com/somepage.php?js=true'>Link</a>")
</script>
<noscript>
  <a href='http://www.example.com/somepage.php?js=false'>Link</a>
</noscript>    

Затем вы либо вызываете отдельные преобразования XSL, либо можете использовать один параметризованный XLST.

Обновление (после вашего редактирования):

Просто создайте noscript контент в вашем XSLT, как это было бы в статическом HTML:

<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no" encoding="windows-1251"/>
<xsl:template match="someNode">
    <!-- javascript enabled -->
    HTML/JavaScript to dynamically load images

    <noscript>fallback content</noscript>
</xsl:template>
</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...