views:

2553

answers:

5

I've recently installed IE 8 and can't seem to get the jquery $(document).ready event to fire. Are there any special considerations that I'm missing? Litterally, this is all I have in my html and it works as expected in Chrome and Firefox:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml"&gt;
<head runat="server">
    <title>Page full of awesomeness</title>
    <script type="text/javascript" src="~/Scripts/jquery-1.3.2.js" />
    <script type="text/javascript">        
        $(document).ready(function() {
            alert("Hello?");           
        });
    </script>
</head>

<body>

</body>

In Internet Explorer, the page just loads without incident. There's no alert box and I can't see any javascript errors reported. Is this something normal that I just don't know about?

+16  A: 

Try turning this.

<script type="text/javascript" src="~/Scripts/jquery-1.3.2.js" />

Into this

<script type="text/javascript" src="~/Scripts/jquery-1.3.2.js"></script>
Ólafur Waage
Correct. IE fails hard on self-closing script tags. see: http://webbugtrack.blogspot.com/2007/08/bug-153-self-closing-script-tag-issues.html
scunliffe
It's hardly failure if its specified to work in such a way.. just because you get results doing it wrong doesn't mean you should use it.
meandmycode
That totally did it. Thanks. I probably would've never come up with that one.
MojoFilter
Yep, I've had that problem with other browsers as well.
João Marcus
A: 

My guess would be this (sorry i don't have ie8 on this machine to test)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml"&gt;
<head runat="server">
    <title>Page full of awesomeness</title>
    <script type="text/javascript" src="~/Scripts/jquery-1.3.2.js"></script>
    <script type="text/javascript">        
        $(document).ready(function() {
            alert("Hello?");           
        });
    </script>
</head>

<body>

</body>

Also i'd suggest to use /Scripts/jquery-1.3.2.js if you are referring to your site's root

Alekc
I wouldn't. If you use /Script/jquery-1.3.2.js then your site won't work on a virtual web.
cdmckay
Yep, theres no reason to remove the ~, removing it will only make your application more brittle.
meandmycode
Well it was only my opinion. In the past i've had some issues with linking libraries in sites with heavy usage of "Human urls" so i prefer to link them with "/" (of course if they are under the site's domain root)
Alekc
+1  A: 

With current XHTML strict standards:

Even when src is specified, the script tag is not an empty tag, and cannot be written <script src=".... />. If you include the src you should not include any script between the opening and closing tags as browser handling of any script between the tags is not reliable.

Basically, do not self close the tag. Use </script>.

T Pops
A: 

In addition to what others have said, you're also missing the </html> at the end of the document. Maybe just a copy/paste error :)

thenduks
A: 

I have the same problem but when I try to replace <script .... /> with <script...> </script> Wow, it works but it takes so long to load. Is there any solution for the speed of loading in ie? Thanks so much.