Quelltext der Datei: http://www.michaelster.ch/jsTestFolder/wikipedia/IEFixes.js

Dateigrösse: 4.13 kb

[Anzeige ohne Zeilennummern]


  1 // IE fixes javascript
  2 
  3 var isMSIE55 = (window.showModalDialog && window.clipboardData && window.createPopup);
  4 var doneIETransform;
  5 var doneIEAlphaFix;
  6 
  7 if (document.attachEvent)
  8   document.attachEvent('onreadystatechange', hookit);
  9 
 10 function hookit() {
 11     if (!doneIETransform && document.getElementById && document.getElementById('bodyContent')) {
 12         doneIETransform = true;
 13         relativeforfloats();
 14         fixalpha();
 15     }
 16 }
 17 
 18 // png alpha transparency fixes
 19 function fixalpha() {
 20     // bg
 21     if (isMSIE55 && !doneIEAlphaFix)
 22     {
 23         var plogo = document.getElementById('p-logo');
 24         if (!plogo) return;
 25 
 26         var logoa = plogo.getElementsByTagName('a')[0];
 27         if (!logoa) return;
 28 
 29         var bg = logoa.currentStyle.backgroundImage;
 30         var imageUrl = bg.substring(5, bg.length-2);
 31 
 32         doneIEAlphaFix = true;
 33 
 34         if (imageUrl.substr(imageUrl.length-4).toLowerCase() == '.png') {
 35             var logospan = logoa.appendChild(document.createElement('span'));
 36 
 37             logoa.style.backgroundImage = 'none';
 38             logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')';
 39             logospan.style.height = '100%';
 40             logospan.style.position = 'absolute';
 41             logospan.style.width = logoa.currentStyle.width;
 42             logospan.style.cursor = 'hand';
 43             // Center image with hack for IE5.5
 44             if (document.documentElement.dir == "rtl")
 45             {
 46               logospan.style.right = '50%';
 47               logospan.style.setExpression('marginRight', '"-" + (this.offsetWidth / 2) + "px"');
 48             }
 49             else
 50             {
 51               logospan.style.left = '50%';
 52               logospan.style.setExpression('marginLeft', '"-" + (this.offsetWidth / 2) + "px"');
 53             }
 54             logospan.style.top = '50%';
 55             logospan.style.setExpression('marginTop', '"-" + (this.offsetHeight / 2) + "px"');
 56 
 57             var linkFix = logoa.appendChild(logoa.cloneNode());
 58             linkFix.style.position = 'absolute';
 59             linkFix.style.height = '100%';
 60             linkFix.style.width = '100%';
 61         }
 62     }
 63 }
 64 
 65 // fix ie6 disappering float bug
 66 function relativeforfloats() {
 67     var bc = document.getElementById('bodyContent');
 68     if (bc) {
 69         var tables = bc.getElementsByTagName('table');
 70         var divs = bc.getElementsByTagName('div');
 71     }
 72     setrelative(tables);
 73     setrelative(divs);
 74 }
 75 function setrelative (nodes) {
 76     var i = 0;
 77     while (i < nodes.length) {
 78         if(((nodes[i].style.float && nodes[i].style.float != ('none') ||
 79         (nodes[i].align && nodes[i].align != ('none'))) &&
 80         (!nodes[i].style.position || nodes[i].style.position != 'relative'))) 
 81         {
 82             nodes[i].style.position = 'relative';
 83         }
 84         i++;
 85     }
 86 }
 87 
 88 
 89 // Expand links for printing
 90 
 91 String.prototype.hasClass = function(classWanted)
 92 {
 93     var classArr = this.split(/\s/);
 94     for (var i=0; i<classArr.length; i++)
 95       if (classArr[i].toLowerCase() == classWanted.toLowerCase()) return true;
 96     return false;
 97 }
 98 
 99 var expandedURLs;
100 
101 onbeforeprint = function() { 
102     expandedURLs = [];
103 
104     var contentEl = document.getElementById("content");
105 
106     if (contentEl)
107     {
108       var allLinks = contentEl.getElementsByTagName("a");
109 
110       for (var i=0; i < allLinks.length; i++) {
111           if (allLinks[i].className.hasClass("external") && !allLinks[i].className.hasClass("free")) {
112               var expandedLink = document.createElement("span");
113               var expandedText = document.createTextNode(" (" + allLinks[i].href + ")");
114               expandedLink.appendChild(expandedText);
115               allLinks[i].parentNode.insertBefore(expandedLink, allLinks[i].nextSibling);
116               expandedURLs[i] = expandedLink;
117           }
118       }
119    }
120 }
121 
122 onafterprint = function()
123 {
124     for (var i=0; i < expandedURLs.length; i++)
125         if (expandedURLs[i])
126             expandedURLs[i].removeNode(true);
127 }