часть кода VBScript разбивается дефисами - PullRequest
0 голосов
/ 13 сентября 2009

на некоторых компьютерах, когда клиент открывает определенную HTML-страницу, часть кода vbscript на стороне клиента разбивается дефисами. я увидел, что код VBScript на этой странице состоит из одного огромного раздела кода, заключенного в теги начала и конца сценария. я решил разбить его на небольшие разделы, и это казалось лучше, но когда я фрагментировал его на 10 разделов, два раздела (раздел означает код между начальным и конечным тегом) все еще были уничтожены (то есть весь код раздела был заменен дефисами заключенный в HTML начальные и конечные знаки примечания: и один из разделов был не таким большим (возможно, 100 строк), конечно, были и другие более крупные разделы, которые не были повреждены. Я не могу восстановить проблему на любом компьютере, кроме двух или трех клиентов, и их терпение - редкий ресурс (который я уже использовал). Так что, без маневрирования места, я должен фрагментировать их еще и надеяться, что это поможет? или это другая проблема?

Ответы [ 2 ]

2 голосов
/ 13 сентября 2009

Кажется, есть некоторая путаница с тегами скрипта и комментариями html. Тег VBScript на стороне клиента будет выглядеть так:

<script type="text/vbscript"> ... </script>

Или с более старым (устаревшим) языковым атрибутом:

<script language="VBScript"> ... </script>

Это единственный тип VBScript, который когда-либо достигнет клиента, при условии, конечно, что вы поместите его на страницу .asp. Если вы поместите его на страницу .html, она будет отправлена ​​клиенту как есть, без запуска через сервер сценариев на сервере.

Тег VBScript на стороне сервера будет выглядеть так:

<script runat="server"> ... </script>

Или краткая форма:

<% ... %>

Если на странице .asp имеются правильные теги серверных сценариев, код внутри никогда не будет виден клиенту.

Комментарий HTML выглядит следующим образом:

<!-- ... -->

Обратите внимание, что дефис является частью комментария HTML. Два дефиса в начале включают режим комментария, а два дефиса в конце отключают режим комментария. Если у вас есть еще два дефиса внутри комментария, он разбит и отображается на странице:

<!-- This is not -- a comment -->

Однако, если вы добавите еще одну пару дефисов, чтобы снова включить режим комментариев, это будет действительный комментарий:

<!-- This is -- -- a comment -->

HTML-комментарии иногда используются внутри тегов скрипта, по какой-то исторической причине, что браузеры, которые не поддерживают скрипт, не должны отображать код на странице. Это больше не нужно, так как все браузеры в настоящее время понимают тег сценария, даже если они не запускают сценарий. Риск того, что у вас есть 20-летний браузер, довольно мал.

Если у вас есть тег сценария с комментариями HTML, и тег сценария и комментарий HTML будут повреждены, он может появиться в браузере. Как это:

<scrpt type="text/javascript">
<!--
var i = 1;
i--;
//-->
</script>

Обратите внимание, что оператор - в скрипте нарушает комментарий. Если тег script не сломан, это не проблема. Браузер не будет воспринимать комментарий внутри скрипта как реальный комментарий, поэтому не имеет значения, что он нарушен.

0 голосов
/ 04 февраля 2010

я выяснил в чем проблема. антивирус, предоставленный интернет-провайдером, решил нейтрализовать код vbscript всякий раз, когда он показался «подозрительным». так, например, если vbscript содержал переменную с именем - swFileExists, весь сегмент vbscript превратился в набор дружественных, нешуточных дефисов.

...