Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Internet Explorer und PNG

Anleitung Entwicklung Webentwicklung

Mitglied: netstorm

netstorm (Level 1) - Jetzt verbinden

18.01.2006, aktualisiert 19.04.2007, 20529 Aufrufe, 3 Kommentare

Wer kennt das Problem nicht: Ich brauche fürs Web-Design ein Bild mit transparentem Hintergrund. JPEG kanns nicht und GIF macht aus einem Schatten irgendwas komisches, was nicht mehr wirklich wie Schatten aussieht. Bleibt als neues Format noch PNG. Aber da hat der Internet Explorer noch Probleme.

PNG ist ein neues Bildformat, das ursprünglich entstanden ist, um die Lizenzgebühr des GIF-Formats zu umgehen. Dabei ist ein Format herausgekommen, das GIF's um Klassen schlägt. Bessere Qualität bei meist kleineren Dateigrößen. Das Webdesigner Herz schlägt höher bei einem solchen Gedanken. Ja auch Schattenwurf auf einen transparenten Hintergrund funktioniert mit PNG. *Jubel*

Aber schnell wird klar: Unser Freund der Internet Explorer kann mal wieder was nicht richtig. Diesmal hat er Probleme mit dem Anzeigen eben jenes transparenten Hintergrunds (Alpha Layer). Stattdessen macht er ihn weiß oder auch mal in ner anderen Farbe. Je nach belieben. Doch mit einem kleinen JavaScript kann man auch dem Internet Explorer beibringen, PNG's korrekt anzuzeigen. Das möchte ich im Folgenden erklären:

Zunächst legt man eine Datei an. Ich nenne diese immer pngfix.js. Einmal angelegt ist sie auch immer wieder verwendbar
In diese Datei kommt jetzt folgender Code:

01.
function correctPNG() 
02.
03.
 for(var i=0; i < document.images.length; i++) 
04.
05.
  var img = document.images[i] 
06.
  var imgName = img.src.toUpperCase() 
07.
  if (imgName.substring(imgName.length-3, imgName.length) == "PNG") 
08.
09.
   var imgID = (img.id) ? "id='" + img.id + "' " : "" 
10.
   var imgClass = (img.className) ? "class='" + img.className + "' " : "" 
11.
   var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' " 
12.
   var imgStyle = "display:inline-block;" + img.style.cssText 
13.
   if (img.align == "left") imgStyle = "float:left;" + imgStyle 
14.
   if (img.align == "right") imgStyle = "float:right;" + imgStyle 
15.
   if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle 
16.
   var strNewHTML = "< span " + imgID + imgClass + imgTitle 
17.
     + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" 
18.
     + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" 
19.
     + "(src=\'" + img.src + "\', sizingMethod='scale');\">" 
20.
   img.outerHTML = strNewHTML 
21.
   i = i-1 
22.
23.
24.
25.
 
26.
if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) { 
27.
	window.attachEvent("onload", alphaBackgrounds); 
28.
29.
 
30.
function alphaBackgrounds(){ 
31.
	var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, ''); 
32.
	var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5); 
33.
	for (i=0; i < document.all.length; i++){ 
34.
		var bg = document.all[i].currentStyle.backgroundImage; 
35.
		if (itsAllGood && bg){ 
36.
			if (bg.match(/\.png/i) != null){ 
37.
				var mypng = bg.substring(5,bg.length-2); 
38.
				document.all[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mypng+"', sizingMethod='scale')"; 
39.
				document.all[i].style.backgroundImage = "url('/assets/images/x.gif')"; 
40.
41.
42.
43.
44.
 
45.
window.attachEvent("onload", correctPNG);
Hat man nun Seiten, die PNG-Bilder enthalten fügt man noch folgende kleine Passage zwischen den head-tags ein (Runde Klammern "(" und ")" sind durch spitze Klammern "<" und ">" zu ersetzen):

01.
<!--[if gte IE 5.5000]) 
02.
<(script type="text/javascript" src="pngfix.js"></script> 
03.
<![endif]-->


Damit werden automatisch alle auf der Page befindlichen PNG's mit einem Alpha-Layer versehen, mit dem der IEx auch was anfangen kann. Aber nur dann, wenn der Browser auch ein IEx ist. Für alle anderen Browser ändert sich nix.

Viel Spaß beim Ausprobieren.
Ciao Thorsten
Mitglied: Aldarin
11.10.2006 um 11:16 Uhr
Danke für das gute Script!

Ich hab ein paar kleine Änderungen vorgenommen (spezifisch für meine Seite) aber es arbeitet ohne Probleme!

Hab es bisher noch nicht mit dem IE7 ausprobiert, aber das kommt noch!

Grüße,
Daniel
Bitte warten ..
Mitglied: Xaero1982
19.04.2007 um 14:27 Uhr
So viel Code für sowas simples?

Das mach ich mir leichter!

Vorraussetzung: Aktiviertes SSI

01.
<!--#if expr="$HTTP_USER_AGENT = /.*MSIE.*/" --> 
02.
	<style type="text/css" media="all">@import url("name.css");</style> 
03.
<!--#else --> 
04.
	<style type="text/css" media="all">@import url("name2.css");</style> 
05.
<!--#endif -->
Und in der CSS für den IE (name.css) kommt dann eure Klasse:

01.
.banner { 
02.
	filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="BILDNAME.PNG", sizingMethod="crop"); 
03.
    background-repeat: no-repeat; 
04.
}
Und in der anderen CSS braucht ihr den Filter nicht ...

Geht wunderbar
Bitte warten ..
Mitglied: Tflugi
17.01.2009 um 14:50 Uhr
Super das Script, habs auch zum laufen gebracht. Nur irgend etwas ist komisch wo ich hoffe, dass mir jemand helfen kann. Auf dieser Seite (http://www.bcneuheim.ch/gen/anlaesse1.php) habe ich das Script eingefügt, die Transparenz funktioniert, nur verzieht mir der IE einzelne Grafiken und die folgenden stellt er gar nicht mehr dar. Weiss jemand warum?

Dies wäre die Seite ohne Script: http://www.bcneuheim.ch/gen/anlaesse.php

Vielen Dank
Gruss Thomas
Bitte warten ..
Ähnliche Inhalte
Windows Update
Microsoft Update Katalog ohne Internet Explorer nutzen
Tipp von colinardoWindows Update2 Kommentare

Microsoft ist zwar schon dabei den Katalog Browser unabhängig umzubauen, hier aber trotzdem noch ein schneller Tipp zur Nutzung ...

Webbrowser
Internet Explorer zeigt keine PDFs an "Die Seite kann nicht angezeigt werden"
Tipp von BadgerWebbrowser2 Kommentare

Hatte bei einem User das Problem, dass der Internet Explorer beim öffnen sämtlicher PDFs die Fehlermeldung "Die Seite kann ...

Windows 10
Windows 10: Spartan Rendering Engine im Internet Explorer 11 aktivieren
Tipp von FrankWindows 10

Hier ein kleiner Tipp, wie man im Internet Explorer 11 von Windows 10 schon jetzt die "Spartan" Rendering Engine ...

Internet
LNET - Ihr lokales Internet
Erfahrungsbericht von schneerunzelInternet4 Kommentare

Hallo Zusammen, ich möchte euch von meine Erfahrungen mit LNET berichten. LNET ist ein Service der Innofactory GMBH. Im ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 3 StundenErkennung und -Abwehr

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücke Spectre und ...

Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 1 TagMicrosoft Office9 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 1 TagDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

SAN, NAS, DAS

Backdoor Zugang und Upload-Bug in vielen Western Digital MyCloud Geräten

Information von Frank vor 1 TagSAN, NAS, DAS2 Kommentare

James Bercegay von der Firma Gulftech hat die Fehler an Western Digital gemeldet und das Unternehmen stellt bereits ein ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

iOS
Einladung vom iphone kalender
Frage von jensgebkeniOS15 Kommentare

Hallo Gemeinschaft, folgendes Problem - immer wenn ich von meinem Iphone einen Termin einztrage und diesem Termin Teilnehmer zuweise, ...

Windows Netzwerk
Drucker isolieren in Windows Domäne
gelöst Frage von lcer00Windows Netzwerk14 Kommentare

Hallo zusammen, habe eine Windows-AD (2012R2) in der es einen Druckerserver gibt. Mittlerweile verliere ich das Vertrauen in die ...