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 →