TRiG
TRiG

Reputation: 10643

The window.onload event is not firing in IE8

I stripped down this javascript to be as simple as possible, and it's still not working in IE8.

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload !== 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    };
  }
}

function callkits() {
    alert('Kits: Bug testing');
}

//addLoadEvent(callkits);
//window.onload = callkits;
window.onload = function() {
    callkits();
};

Neither of the two commented out methods, nor the active method, do anything in IE8. Javascript is enabled. (Calling alert directly, outside a function, does work.) I'm tearing my hair out here.

Edit:

Okay, it's now even simpler:

alert('Before onload.')

window.onload = function() {
    alert('Onload');
};

alert('After onload');

In Firefox, Opera, Safari, and Chrome, I get "Before onload", "After onload", then the page appears, then "Onload". In IE8, that last step doesn't happen. window.onload simply isn't firing.

Upvotes: 2

Views: 5431

Answers (1)

TRiG
TRiG

Reputation: 10643

The standard onload event won't work if another script is called using an HTML defer command.

<script for="window" event="onload" defer="1">products.related();</script>

Changing the above to use the standard addLoadEvent() function made it work.

Upvotes: 1

Related Questions