部分vbscript代码被连字符破坏

时间:2009-09-13 06:04:52

标签: html asp-classic vbscript corrupt hyphen

在某些计算机上,当客户端打开特定的html页面时,客户端的部分vbscript代码会被连字符破坏。我看到该页面上的vbscript代码由脚本开始和结束标记中包含的一个巨大的代码部分组成。 我决定把它分成小部分,看起来更好,但是当我把它分成10个部分时,其中两个部分(部分表示开始和结束标记之间的代码)仍然被删除(意味着整个部分代码被替换为连字符)用html开头和结尾标记括起来: 其中一个部分不是那么大(可能是100行),肯定还有其他更大的部分没有被破坏。 我无法在两个或三个客户端旁边的任何计算机上重建问题,他们的耐心是一种罕见的资源(我已经使用过)。所以,如果没有机动空间,我是否应该将它们分解一些并希望这会有所帮助?还是另一个问题?

2 个答案:

答案 0 :(得分:2)

脚本标签和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>

请注意,脚本中的 - 运算符正在破坏注释。如果脚本标记没有被破坏,那么它不是问题。浏览器不会将脚本中的注释视为真实注释,因此它不会被破坏。

答案 1 :(得分:0)

我发现了什么问题。互联网提供商提供的防病毒软件决定在出现“可疑”时中和vbscript代码。所以,例如,如果vbscript包含一个名为-swFileExists的变量,那么整个vbscript段就变成了一堆友好,不稳定的连字符。