There are several ways to add client-side javascript to a ASP.NET page depending on your needs. Other than using the traditional method of just adding a <script> section in the <head> section of the page, but what if want to reference that javascript across multiple pages? Here are a few other methods.
Using an external .js file
You could just reference an external .js file like this:
<script language="javascript" src="scroller.js"></script>
Using a master page
This approach uses the ClientScriptManager to register a client-side script in a master page and makes it accessible across the whole site.
--masterpage.master
<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body onload="displayTime()">
<form id="form1" runat="server">
<div>
<div>
HEADER
<div id="currentTime">
</div>
</div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
--MasterPage.master.vb
Partial Class MasterPage
Inherits System.Web.UI.MasterPage
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
LoadScript()
End Sub
Private Sub LoadScript()
Dim scriptName As String = "DisplayTime"
Dim scriptUrl As String = "~/Scripts/DisplayTime.js"
Dim scriptType As Type = Me.GetType()
Dim clientScriptManager As ClientScriptManager = Page.ClientScript
If (Not clientScriptManager.IsClientScriptIncludeRegistered(scriptType, scriptName)) Then
clientScriptManager.RegisterClientScriptInclude(scriptType, scriptName, ResolveClientUrl(scriptUrl))
End If
End Sub
End Class
Build the javascript as a string and register it
Rather than reference an external javascript file, you can use the RegisterClientScriptBlock method along with the StringBuilder method to register some javascript in your page.
<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default3.aspx.vb" Inherits="Default3" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div>
<input type="button" value="Change Color" onclick="changeColor('blue')" />
</div>
</asp:Content>
Partial Class Default3
Inherits System.Web.UI.Page
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
LoadScript()
End Sub
Private Sub LoadScript()
Dim clientScriptManager As ClientScriptManager = Page.ClientScript
Dim sb As StringBuilder = New StringBuilder()
sb.Append("<script language='javascript'>")
sb.Append("function changeColor(color) {")
sb.Append("document.bgColor=color;")
sb.Append("}")
sb.Append("<")
sb.Append("/script>")
If (Not clientScriptManager.IsClientScriptBlockRegistered("ColorScript")) Then
clientScriptManager.RegisterClientScriptBlock(Me.GetType(), "ColorScript", sb.ToString())
End If
End Sub
End Class
Build the javascript as a string and register it on startup
Lastly, using the same approach as above except for this time the javascript doesn't get registered until the page starts using the RegisterStartupScript method
Partial Class Default4
Inherits System.Web.UI.Page
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
LoadScript()
End Sub
Private Sub LoadScript()
Dim clientScriptManager As ClientScriptManager = Page.ClientScript
Dim sb As StringBuilder = New StringBuilder()
sb.Append("<script language='javascript'>")
sb.Append("document.bgColor='green';")
sb.Append("<")
sb.Append("/script>")
If (Not clientScriptManager.IsStartupScriptRegistered("ColorScript")) Then
clientScriptManager.RegisterStartupScript(Me.GetType(), "ColorScript", sb.ToString())
End If
End Sub
End Class