This was one weird mystery. I have used ASP.NET’s method ClientScript.RegisterStartupScript countless times to inject client-side JavaScript into page’s markup from the server-side code and it always worked perfectly. This time I created a very basic page from scratch:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>My Page</title>
<script type="text/javascript" src="script1.js" />
<script type="text/javascript" src="script2.js" />
<script type="text/javascript" src="script3.js" />
</head>
<body>
<form id="xfrmMain" runat="server">
</form>
</body>
</html>
And then injected client-side script into it:
ClientScript.RegisterStartupScript(Me.GetType, "JSCode", "ProcessData();", True)
where ProcessData() is function from one of the scripts, loaded in the HEAD tag. The script injected just fine, I got a beautiful insert at the bottom of the rendered page:
<script type="text/javascript"> //<![CDATA[ ProcessData();//]]> </script>
The problem was – it didn’d do squat – the script did not execute. Why? Continue reading →
