views:

53

answers:

1

It seems that IE8 defers javascript, but also doesn't block. I've setup a test environment to prove this. Here's the html page(replace 192.168.1.xxx with your server):

<html>
<head>
 <title>IE Pains</title>
 <script type='text/javascript' src='http://192.168.1.xxx/ietest/js.js'&gt;&lt;/script&gt;
 <script type='text/javascript'>
  scream('hello world');
 </script>
</head>
<body>
</body>
</html>

And the js File:

function scream( str ) {
 alert( str );
}

Am I seeing this wrong, or does IE not recognize the scream function because it hasn't finished loading js.js?

EDIT: I created the pages on my server: http://www.codenothing.com/ietest/, which loads fine in IE8, but bringing it down to local machine, and going through local network seems to be failing. I have confirmed this on 2 different wireless networks going through the 192.168 protocol.

+2  A: 

Scripts are blocking in all browsers, including IE8, unless the async or defer attributes are present. Vast amounts of scripts rely on the predictability of script elements blocking parsing, including libraries and frameworks (for instance, how could you declare $(document).ready() if the browser didn't wait for the jQuery script to complete?)

Check the following:

  • There are no syntax errors or typos in the JS file.
  • The path to the JS file is correct.
  • The function is declared in the global scope.

You could even try the jQuery library itself:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.js"&gt;&lt;/script&gt;
<script type="text/javascript">
$(function(){
    alert("test");
});
</script>   
Andy E
--Added as edit to main post
Corey Hart
Also, everything you said is right, that's why I am so confused as to why it's across only the local network.
Corey Hart