#javascript #asp-classic
#javascript #asp-классический
Вопрос:
Эта многострочная строка, созданная браузером, имеет ожидаемую длину:
<script type="text/javascript">
var s = "
a";
document.write(s.length);
</script>
Выводит 5
Но при выполнении как scritp на стороне сервера ASP он выдает 1:
<%@ Language=JavaScript %>
<%
var s = "
a";
Response.Write(s.length);
%>
Происходит то, что версия Javascript для ASP использует начальные пробелы при использовании в многострочных строках.
Как заставить версию ASP вести себя так же, как версия браузера?
Комментарии:
1. Мой Google-fu предлагает вам попробовать
len(s)
;2. len() — это vbscript: возможно, вы путаете ASP с языком…
3. чего вы пытаетесь достичь — вы просто используете многострочность для удобства чтения кода (поскольку строка фактически не будет содержать никаких разрывов строк)? Я думаю, что суть в том, что, поскольку этот подход является «нестандартным», вы не можете полагаться на разные хосты, ведущие себя одинаково.
4. @Тим Уильямс Да, удобочитаемость. Я использую его для написания динамических SQL-запросов, которые выглядят некрасиво в исходном коде при объединении строк. Чтобы сделать разрыв строки, я заканчиваю строку символом ` n `. Такое поведение не является проблемой при чтении запроса в исходном коде, но когда я хочу показать реальный запрос в браузере с замененными параметрами, он выравнивается по левому краю, поскольку начальные пробелы теряются.
Ответ №1:
Если вы добавляете
в начале строки, asp распознает пробелы.
<%@ Language=JavaScript %>
<%
var s = "
a";
Response.Write(s.length);
%>
Я не был знаком с использованием
символа для создания многострочных строк. Отличная штука, но я не смог найти документацию для этого. Я предполагаю, что это просто экранирование разрыва строки? У вас есть ссылка на ссылку?
Отредактируйте Дополнительно этот код:
<pre>
<%
var s = "
unescaped";
Response.Write(s);
Response.Write("n");
s = "
escaped";
Response.Write(s);
%>
</pre>
Выдает такой результат:
unescaped
escaped
Комментарии:
1. Похоже, ваше решение достаточно хорошо. Как указал Тим, это нестандартное использование. Но простой поиск в Google показывает, что он принимается всеми браузерами.
Ответ №2:
Если вы пытаетесь увидеть несколько пробелов в html, следует отметить, что при визуализации html несколько пробелов будут свернуты. Используйте 'amp;nbsp'
, когда в выводе html требуется неразрывный пробел.
Комментарии:
1. Я визуализирую его, заключенный в
<pre>
тег, который сохраняет пробелы. Проблема в том, что ASP-версия javascript «съедает» начальные пробелы в многострочных строках, как показано при проверке длины строки.