BUG#634, Patch#2: Patch by Tom Gilder. Avoids flickering logo in MSIE 5.5 and newer
authorJens Frank <jeluf@users.mediawiki.org>
Wed, 6 Oct 2004 20:12:14 +0000 (20:12 +0000)
committerJens Frank <jeluf@users.mediawiki.org>
Wed, 6 Oct 2004 20:12:14 +0000 (20:12 +0000)
skins/common/IEFixes.js

index 4fbc9a8..4344f9c 100644 (file)
@@ -1,24 +1,38 @@
-// IE fix javascript
-var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
-if (rslt != null ) var version = Number(rslt[1]);
-else var version = 0;
+// IE fixes javascript
+
+var isMSIE55 = (window.showModalDialog && window.clipboardData && window.createPopup);
+
+if (document.attachEvent)
+  document.attachEvent('onreadystatechange', hookit);
 
-window.attachEvent("onload", hookit);
 function hookit() {
-    fixalpha();
-    relativeforfloats();
+    if (document.getElementById && document.getElementById('bodyContent')) {
+        fixalpha();
+        relativeforfloats();
+    }
 }
 
 // png alpha transparency fixes
-function fixalpha(){
+function fixalpha() {
     // bg
-    if(version >= 5.5) {
-        var logoa = document.getElementById('p-logo').firstChild;
+    if (isMSIE55) {
+        var plogo = document.getElementById('p-logo');
+        var logoa = plogo.getElementsByTagName('a')[0];
         var bg = logoa.currentStyle.backgroundImage;
-        if (bg.match(/\.png/i) != null){
-            var mypng = bg.substring(5,bg.length-2);
-            logoa.style.backgroundImage = "none";
-            logoa.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mypng+"', sizingMethod='crop')";
+        var imageUrl = bg.substring(5, bg.length-2);
+
+        if (imageUrl.substr(imageUrl.length-4).toLowerCase() == '.png') {
+            var logospan = logoa.appendChild(document.createElement('span'));
+           
+            logoa.style.backgroundImage = 'none';
+            logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='+imageUrl+')';
+            logospan.style.height = '100%';
+            logospan.style.position = 'absolute';
+            logospan.style.width = '100%';
+            logospan.style.cursor = 'hand';
+            // Center image with hack for IE5.5
+            logospan.style.left = '50%';
+            logospan.style.setExpression('marginLeft', '"-" + (this.offsetWidth / 2) + "px"');
         }
     }
 }