I've got some code that uses Page.ClientScript.RegisterStartupScript to call
a javascript function from the Page_Load method in the code behind.
The code works fine in IE but the javascript function is not called at all
in Firefox. I stripped my code back to the basics and all I have now is a
webform with no controls on it and the following in the code behind:
protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(typeof(Page),
"TestScript", "<script type='text/jscript'>alert('test script');</script>");
}
This very basic webform works in IE but not in Firefox.
I'm running .NET Framework 3.5, IE 7 and Firefox 2.0.0.11. I added
"onload="alert('onLoad')"" to the body tag to ensure that javascript was
enabled and popups were not being blocked in Firefox. The onLoad alert came
up fine but the alert added by the RegisterStartupScript did not come up.
Can anyone shed any light on this?
Cheers
Jonathan Wood - 13 Feb 2008 02:20 GMT
I haven't done much with RegisterStartupScript but it might be helpful to
see what the resulting HTML is, especially if you've narrowed it down to a
bare-bones page.

Signature
Jonathan Wood
SoftCircuits Programming
http://www.softcircuits.com
> I've got some code that uses Page.ClientScript.RegisterStartupScript to
> call
[quoted text clipped - 22 lines]
>
> Cheers
Peter Bromberg [C# MVP] - 13 Feb 2008 02:30 GMT
How about trying:
script type='text/javascript'
"jscript" is Microsoft - specific and the kind people at Firefox apparently
don't take kindly to it.
-- Peter
Site: http://www.eggheadcafe.com
UnBlog: http://petesbloggerama.blogspot.com
MetaFinder: http://www.blogmetafinder.com
> I've got some code that uses Page.ClientScript.RegisterStartupScript to call
> a javascript function from the Page_Load method in the code behind.
[quoted text clipped - 19 lines]
>
> Cheers
Mark Rae [MVP] - 13 Feb 2008 10:53 GMT
> protected void Page_Load(object sender, EventArgs e)
> {
[quoted text clipped - 12 lines]
>
> Can anyone shed any light on this?
That's because you're telling the browser that it should process a script
type of text/jscript - that will only work in IE, Opera and Safari:
http://krijnhoetmer.nl/stuff/javascript/mime-types/
If you *must* include the script tags, make sure you use
type='text/javascript', which will also work in FireFox etc...
However, it's much safer to let ASP.NET output the script tags dynamically
according to what browser it detects, by using the boolean overload of the
RegisterStartupScript method:
ClientScript.RegisterStartupScript(typeof(Page), "TestScript", "alert('test
script');", True);

Signature
Mark Rae
ASP.NET MVP
http://www.markrae.net
Dune88 - 13 Feb 2008 21:59 GMT
Thanks for all the replies!
Changing "jscript" to "javascript" worked perfectly as did using the boolean
overload.
Doh! I should have spotted that earlier!
> > protected void Page_Load(object sender, EventArgs e)
> > {
[quoted text clipped - 25 lines]
> ClientScript.RegisterStartupScript(typeof(Page), "TestScript", "alert('test
> script');", True);