Rewrite of JS onload hook code; allows add-on scripts to run functions as soon as...
authorTom Gilder <tomgilder@users.mediawiki.org>
Wed, 26 Oct 2005 00:57:14 +0000 (00:57 +0000)
committerTom Gilder <tomgilder@users.mediawiki.org>
Wed, 26 Oct 2005 00:57:14 +0000 (00:57 +0000)
skins/MonoBook.php
skins/common/wikibits.js

index a1460f7..d8ff280 100644 (file)
@@ -227,7 +227,7 @@ class MonoBookTemplate extends QuickTemplate {
          <?php if($this->data['tagline']) { ?><li id="f-tagline"><?php echo $this->data['tagline'] ?></li><?php } ?>
        </ul>
       </div>
-    <script type="text/javascript"> if (window.onloadhook) onloadhook(); </script>
+    <script type="text/javascript"> if (window.runOnloadHook) runOnloadHook(); </script>
     </div>
     <?php $this->html('reporttime') ?>
   </body>
index bfb3ec1..32194ed 100644 (file)
@@ -14,19 +14,41 @@ if (clientPC.indexOf('opera')!=-1) {
 // add any onload functions in this hook (please don't hard-code any events in the xhtml source)
 
 var doneOnloadHook;
+var onloadFuncts = [];
 
-function onloadhook () {
+function addOnloadHook( hookFunct )
+{
+  // Allows add-on scripts to add onload functions
+  onloadFuncts[onloadFuncts.length] = hookFunct;
+}
+
+function runOnloadHook()
+  {
     // don't run anything below this for non-dom browsers
-    if (doneOnloadHook || !(document.getElementById && document.getElementsByTagName)) return;
+    if ( doneOnloadHook || !( document.getElementById && document.getElementsByTagName ) )
+      return;
+
     histrowinit();
     unhidetzbutton();
     tabbedprefs();
     akeytt();
+
+    // Run any added-on functions
+    for ( var i = 0; i < onloadFuncts.length; i++ )
+      onloadFuncts[i]();
+
     doneOnloadHook = true;
 }
-if (window.addEventListener) window.addEventListener("load",onloadhook,false);
-else if (window.attachEvent) window.attachEvent("onload",onloadhook);
 
+function hookEvent( hookName, hookFunct )
+{
+  if ( window.addEventListener )
+    addEventListener( hookName, hookFunct, false );
+  else if ( window.attachEvent )
+    attachEvent( "on" + hookName, hookFunct );
+}
+
+hookEvent( "load", runOnloadHook );
 
 // document.write special stylesheet links
 if(typeof stylepath != 'undefined' && typeof skin != 'undefined') {