script脚本为网页设计提供了很大的方便,然而我们时常会遇到错误。尤其是script的language属性是javascript,即使有错误存在脚本中,浏览器也不会发出任何错误信息,这也就把初学者搞的很郁闷。
我们先来了解一下脚本的运行机制,脚本是优先于html的Tag加载到浏览器的。在涉及到内联服务器脚本的时候,最好用同一语言来写,也就是说不要在一个内联脚本中把几种脚本语言混合来用。比如,在页面前面的@指令中我们指定的VBScript,当我们在页面里面写下下面的脚本时就会在低版本的iis中出现问题,如下:
<%="script inline<br>"%>
<script language="javascript" runat="server">
document.writeln("javascript")
</script>
运行的时候就会有提示:采用非缺省语言的脚本
这样我们就能理解上述所说,不要用不同的脚本语言来写内联脚本。
不同语言写的客户端脚本也要注意脚本放置的顺序。举例来说,在一个页面里面,我们先放置一个VBScript脚本,其调用javascript脚本中的function,注意,javascript脚本放置在VBScript脚本的后面,执行页面的时候调用的javascript中的function就会失败。为甚么?浏览器执行脚本是顺序执行的,它分析不到javascript中的function.如果你了解结构化语言,就会明白了:先声明,再使用,套用一下,也就是要先定义,再使用。
在上面我们说到脚本是优先执行的,但是当用<% %>做标记,这就不成立了。比较一下如下:
<script></script>标记:
<html>
<head>
<title>test</title>
</head>
<body>
hellow world
<script language="javascript">
document.write("javascript")
</script>
</body>
</html>
<% %>标记:
<html>
<head>
<title>test</title>
</head>
<body>
hellow world
<%="script"%>
</body>
</html>
执行后就可以更加清楚的看到两者的区别了,还可以查看各自生产的源码。
明白了这些后,当我们在设计web页面的时候就可以很好的运用script来丰富我们设计了。接下来,再来看一下在script在asp.net中的运用。
在.net中,webform里的服务器端控件同样可以调用脚本,不过要在.cs文件中进行调用。如下例:
在.aspx中有一个button:<asp:button id="Test" name="button" runat="server"/>,在.cs文件里面的Page_load中添加要调用的脚本函数或过程func():
Test.Attribute.add("func()");
可能你会说,为什么在下面的写法中会出错?
<asp:button id="Test" name="button" runat="server" οnclick="javascript:func()">
那么只能说明你对asp.net完全不熟悉,该好好的补一下相关的知识了,尤其是webform页面的加载执行。