RegisterStartupScript and Firefox

D

Dune88

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
 
J

Jonathan Wood

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.
 
M

Mark Rae [MVP]

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?

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);
 
D

Dune88

Thanks for all the replies!

Changing "jscript" to "javascript" worked perfectly as did using the boolean
overload.

Doh! I should have spotted that earlier!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top