开始:
你能让javascript和vbscript实现从同一个表格里传出音乐。看看下面的脚本:
- <%@LANGUAGE="JavaScript"%>
- <SCRIPT LANGUAGE="JavaScript" RUNAT="Server">
- function JSGreeting()
- {
- return "Greetings from a JavaScript Function";
- }
- </SCRIPT>
- <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
- Function VBGreeting()
- VBGreeting="Greetings from a VBScript Function"
- End Function
- Function toDollars(x)
- toDollars=FormatCurrency(x)
- End Function
- </SCRIPT>
- <%
- var a = 2;
- var b = 2;
- var c = add(a,b)
- c += " (Two numbers are added by JavaScript, "
- c += "and then formatted into currency by VBScript.)"
- function add(x,y)
- {
- result = x + y;
- result = toDollars(result);
- return result;
- }
- Response.Write("<HTML> ")
- Response.Write(JSGreeting() + "
- ")
- Response.Write(VBGreeting() + "
- ")
- Response.Write(c + "
- ")
- Response.Write("</HTML> ")
- %>
RUNAT:
让我们将它从头到尾的分解开来。下面所列是一个简单而独立的javascript:
要不是那个不起眼的RUNAT="Server",它看起来就是一个你可能在客户端看到的简单的javascript。
RUNAT属性告诉服务器在服务器端执行它,因此客户端永远都看不到它的。你也可以将属性设置为RUNAT="client",这样就可以跳过服务器端,直接在客户端执行了。
顺便说一句,不能放置在asp标签内。
看看下面的vbscript:
FunctionVBGreeting()
VBGreeting="GreetingsfromaVBScriptFunction"
EndFunction
这个vbscript实现了和javascript同样的功能。它并没有什么特别之处。
然而,下面的vbscript还是有一些特别之处的。
FunctiontoDollars(x)
toDollars=FormatCurrency(x)
EndFunction
引用:
上面的函数回从javascript中获得一个参数。然后他会给javascript返回一个最合适的值。让我们来看看FunctiontoDollars(x)是如何被引用的。
functionadd(x,y)
{
result=x+y;
result=toDollars(result);
returnresult;
}
函数add(x,y)是一个javascript函数。从函数的中间可以看到
result=toDollars(result);
上面的一行实际上是vbscript对javascript的一个调用。
警告:
作为一个警告。当你创建带有RUNAT属性的脚本的时候,你实际上在安排它的执行顺序。我并不会深入的去讲解这个问题,因为执行的顺序是根据形势而定的。
下面是我将要深入讲解的:只对函数使用RUNAT属性(还有那些在函数内调用的全局变量)。不要将最顶层的代码放在它里面,因为你不能保证顶层代码会因为使用这个技巧而改变执行顺序。