jQuery $(document).ready() failing in IE6

前端 未结 12 1032
一向
一向 2020-12-06 11:50

I have the following code:

// Creates a timer to check for elements popping into the dom            
timer = setInterval(function ()
{          
    for (p i         


        
相关标签:
12条回答
  • 2020-12-06 11:55

    If anyone have the same problem you should see if when you call your javascripts you have type="application/javascript", I eliminate it and it was corrected, I think it's some problem with IE and the type Thing

    0 讨论(0)
  • 2020-12-06 11:55

    Make sure your script type is text/javascript

    <script type='text/javascript'
    
    0 讨论(0)
  • 2020-12-06 12:03

    I ran into this problem on my machine, as was able to find a quick fix. Here's what I did:

    1.Debugged my javascript with nickf's suggestion "alert(typeof $)" and got the "undefined" alert message

    2.I then fully qualified my jQuery script resources.

    3.Reload my page and received the "function" alert message

    BTW, I am using IIS 5.1 on XP. My website is configured to use "Wildcard mapping" to take advatage of the asp.net mvc framework. I think that this configuration caused the broken links.

    For more information on how to setup MVC on old versions of IIS, check out Phil Haack's post: http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

    0 讨论(0)
  • 2020-12-06 12:04

    I've had this same issue in the past too. It was a sporadic issue and was horrible to and reproduce.

    The solution that I found was to replace $(document).ready(function() {...}); with jQuery(function() {...}) and it worked like a charm!

    Moving $(document).ready(function() {...}); to the bottom didn't work for my use case.

    The comments in this post are incredibly helpful (Where I first read about doing it this way)

    0 讨论(0)
  • 2020-12-06 12:06

    Just a few pointers for anyone that's interested:

    $(document).ready(function() {...}); and $(function() {...}); means exactly the same thing. The latter is a shorthand for the former.

    If you develop for a large site, using multiple Javascript libraries, or you develop plugins meant to be compatible with other peoples work, you can not trust the dollar sign ($) to be associated with the jQuery object. Use the following notation to be on the safe side:

    (function($) { [your code here] })(jQuery);
    

    This passes jQuery into a self-executing function, and associates $ with the jQuery object inside this function. Then it does not matter what the $ represents outside of your function.

    To get back to your question, have you checked whether the timer variable is assigned when you get the error? I believe the browser will see the $(document).ready(function() {...}); all as one line, so if you have some kind of debugger that tells you that's the offending line, it might be the timer variable...

    Last thing: In Javascript, it is not correct to place open curly braces on a new line. This can cause really bad errors due to Javascripts semicolon-insertion. For further info, read Douglas Crockford's Javascript: The good parts:

    http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_1?ie=UTF8&s=books&qid=1267108736&sr=1-1

    Anyway, really hope I didn't upset anyone. Hope you solve the problem!

    EDIT: I'm not sure if this is what robertz meant by fully qualified, but as far as I know, when a URL is fully qualified it means no parts are missing, ie. it's an absolute URL starting with http:// or https:// (or some other protocol). Please correct me if I'm wrong!

    0 讨论(0)
  • 2020-12-06 12:06

    If it is in a script element which is within your body element, (i.e.) ..

    The cause can be the attributes you pass with the script-tag. If it is:

    <script type="text/javascript">...</script>
    

    IE6 can give an error. You should use

    <script language="javascript">...</script> 
    

    Then the error goes away.

    0 讨论(0)
提交回复
热议问题