$(document).ready doesn't work in IE

In my page there is two links, register and login.

The important one now is register. When I click it, it loads a .tpl file using jquery load function. In this tpl file I include a new js file with <script> ofcourse, and it works perfectly in safari, ff, opera and chrome, but of course, Why should it be working in IE?

So my question is, what should I do to make it working in IE? I think if I put the js in the .tpl file that would solve my problem, but if there is a better solution, I'd like to hear it. No this didn't help, so I guess there is no solution : D

Now I tried it with a simple alert, it worked perfectly.

My problem has changed. If there is a $(document).ready in the JS file the IE "ignores" the whole script, but if there isn't it works perfectly. The thing is that i need that document ready. : D


13.10.2009 17:05:55
jQuery should load it in all browsers. Please post the piece of the .tpl file that includes the <script> tag.
Crescent Fresh 13.10.2009 17:19:13
Yes, I was wrong, I edited my question.
Tom 13.10.2009 17:40:49
So you have a page using Ajax to load some additional HTML+JavaScript into that page (inserting it into the current page's DOM)? And a call to alert() in that new script works, but not a ready handler? Is that correct?
Sixten Otto 13.10.2009 17:47:08
I have a page that using ajax to load a new 'tab' (but actually a whole page, from a seperate file) with a registration form and a js file. In the JS file I call a form validator plugin, and there is a function to handle the registration (a post request with $.ajax) inside $(document).ready ofcourse. It works with Browsers but not with IE, and I can't figure out the problem
Tom 13.10.2009 17:53:29

If the script is "ignored" if there's a $(document)ready then there may be an error in that block of the script and your IE is set to stop running scripts on error.

Try to simplify your issue a bit to try to pin point it. For example, copy the following code into a brand new html file and try it out (NOTE: you'll need to change the src path to the jquery.js file.)

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {

Does the above work in IE for you or does it get ignored as well (again, after you update the path to the jquery.js file)?

If this works but it doesn't in your scenario, check your page's source in IE for how everything is loaded. The only time I've seen $(document).ready() throw an error is when the jquery.js file is not loaded prior to it or there's a conflict with the $() function...in which case you'll need the noConflict() function.

13.10.2009 18:13:41
You're right the problem is in my function. And it was a *** ','. I love IE. Thanks for your help. : D
Tom 13.10.2009 18:23:44

Make sure that the script tag is not in this form:

<script ... />

IE only accepts:

13.10.2009 17:07:18
I'm using the second one
Tom 13.10.2009 17:21:41
It annoys me to no end that you can't use single tag form in IE.
Erik 7.01.2010 19:56:52

IE considers injection of script tags as a security issue. Change the script tag to:

document.write("<scri" + "pt src=...></scri" + "pt>");
13.10.2009 17:07:29

Are you sure that your loaded javascript executes properly in IE. Perhaps it have a javascript quirk that is throwing an error and is making it appear as if it's not loading?

To test this out, non-dynamically including the javascript (include it in the page or similar) and set up a break-point in the script code and step through ot make sure it executes all the way through. Firebug would be an excellent tool for this.

I realise this is grasping at straws, but give it a try perhaps?

13.10.2009 18:05:54
Firebug would be an excellent tool... if it worked in IE. :-/
Sixten Otto 13.10.2009 18:33:45