Die Standard-MasterPage von SharePoint (default.master) wurde ohne Angabe eines DOCTYPE geschrieben. Dadurch fällt der IE beim Rendern in den Quirks Mode zurück. Entsprechend wurden SharePoint-eigene Funktionalitäten wie das Verschieben eines WebParts auf Grundlage des Quirks Mode geschrieben.
Wenn man sich nun aber an Standards halten, und einen DOCTYPE angeben möchte, bekommt man u.U. Probleme in SharePoint.
So bringt zum Beispiel des Einfügen der Angabe
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
einen Fehler beim Ausführen der JavaScript-Methode "MSOLayout_GetRealOffset" hervor, wenn sich der WebPart in einem relativ positionierten DIV befindet:
Message: Objekt erforderlich Line: 1572 Char: 3 Code: 0 URI: http://SERVER/_layouts/1031/ie55up.js?rev=Ni7%2Fj2ZV%2FzCvd09XYSSWvA%3D%3D
Mögliche Lösungen für dieses Problem sind:
1. Anpassen der JavaScript-Methode
Dies sollte jedoch nicht direkt in der <12>\TEMPLATE\LAYOUTS\1033\IE55UP.JS geschehen, da es dort durch Updates überschrieben werden kann. Und spätestens beim Deployen auf einer Farm wird es umständlich.
Daher sollte man die Anpassung lieber in seiner Masterpage vornehmen. Dazu überschreibt man einfach die "fehlerhafte" Methode indem man nach SPWebPartManager folgenden Code einfügt:
<script language="javascript" type="text/javascript"> 1: 2: function MSOLayout_GetRealOffset(StartingObject, OffsetType, EndParent) 3: { 4: var realValue=0; 5: if (!EndParent) EndParent=document.body; 6: for (var currentObject=StartingObject; currentObject && currentObject !=EndParent && currentObject != document.body; currentObject=currentObject.offsetParent) 7: { var offset = eval('currentObject.offset'+OffsetType); 8: if (offset) realValue+=offset; 9: } 10: return realValue; 11: } </script>
oder 2. Vermeiden von position:relative bei Containern für WebParts
Stattdessen kann man z.B. float verwenden. Dazu gibt es diverse MasterPage-Vorlagen.
oder 3. Entfernen der DOCTYPE-Angabe in der MasterPage
Das ist eine schnelle Lösung, aber kein optimales HTML. Eine Triple-A Conformance für "Premium"-Barrierefreiheit wird man dadurch nicht erreichen können. Andererseits: Die default.master wird ja auch so ausgeliefert… 😉
Englischsprachige Quellen zu diesem Thema:
- Heather Solomon: "The DOCTYPE tag and SharePoint Master Pages"
- Tech MOSS Team: "CSS causes JavaScript error while moving Web Parts in edit mode"
Super und Vielen Dank für diesen Artikel!!
War genau das, was ich gesucht habe und hat mir sehr geholfen