Тестирование вывода JavaScript в XSL - PullRequest
0 голосов
/ 05 мая 2011

Я пытаюсь перенести текущий URL в мой xsl.Единственный способ, которым я нашел это, - это использование JavaScript.Проблема в том, что вывод, который я получаю из JavaScript, не тот, который я ожидал.

document.location: http://mydomainname/PressRoom/Pages/PressReleases.aspx?start=1

        <xsl:variable name="start">
                <![CDATA[
                <script type="text/javascript">
                    urlString = new String(document.location);
                    nwls = urlString.split('start=');
                    document.write(nwls[1]);                    
                </script>
                ]]>
        </xsl:variable> 
        start=<xsl:value-of select="$start" disable-output-escaping="yes" />

        <xsl:if test="$start = '1'">
          start variable contains 1
        </xsl:if>

output: start = 1

Тест для $ start = 1 неверен

Если я проверяю, что $ start содержит 'script type =', этот тест верен

Как проверить переменную $ start с отключениемвыходной выход?

Спасибо.

1 Ответ

3 голосов
/ 05 мая 2011

вместо

            <![CDATA[
            <script type="text/javascript">
                urlString = new String(document.location);
                nwls = urlString.split('start=');
                document.write(nwls[1]);                    
            </script>
            ]]>

хочешь

            <script type="text/javascript">
            <![CDATA[
                urlString = new String(document.location);
                nwls = urlString.split('start=');
                document.write(nwls[1]);                    
            ]]>
            </script>

Первый - это текстовый блок, содержащий текст "<script...>", а второй - элемент <script>, содержащий текст внутри раздела CDATA.

Но я думаю, вы не понимаете, что происходит, когда. Механизм XSL запускается и завершается до запуска сценариев. Поэтому вы не можете проверить, равен ли start 1 изнутри, поскольку среда JavaScript еще не настроена.

Также имейте в виду, что некоторые старые версии Firefox закрывали документ перед применением XSL, что означает, что document.write, который запускает новый документ, если существующий был закрыт, унесет сгенерированный XSL контент в этих браузерах.

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