Ich bin auf der Suche nach Kompatibilitätsproblemen in einem ASP.NET-WebForms-Projekt, und ich stoße auf ein seltsames Verhalten. Wenn Sie dieselbe Seite mit verschiedenen Browsern aufrufen, führt dies zu unterschiedlichen Ergebnissen, die nur allzu oft auftreten. Was ist neugierig auf diesen Fall ist, wenn ich Quelle in verschiedenen Browsern, zeigt es mir verschiedene HTML.Versuchen Webbrowser, fehlerhaftes/veraltetes HTML zu reparieren?
IE 10:
<td id="ctl00_MainMenu-menuItem010" onclick="javascript:skm_closeSubMenus(document.getElementById('ctl00_MainMenu'));location.href='../Nurse/nurses_patients.aspx';" onmouseover="javascript:skm_mousedOverMenu('ctl00_MainMenu',this, document.getElementById('ctl00_MainMenu'), false, '');skm_shimSetVisibility(true,'ctl00_MainMenu-menuItem010-subMenu');" onmouseout="javascript:skm_mousedOutMenu('ctl00_MainMenu', this, '');this.className='';" style="cursor:hand;"><font face="Verdana"><b>Patients</b></font></td>
FF:
<td id="ctl00_MainMenu-menuItem010" onclick="javascript:skm_closeSubMenus(document.getElementById('ctl00_MainMenu'));location.href='../Nurse/nurses_patients.aspx';" onmouseover="javascript:skm_mousedOverMenu('ctl00_MainMenu',this, document.getElementById('ctl00_MainMenu'), false, '');" onmouseout="javascript:skm_mousedOutMenu('ctl00_MainMenu', this, '');this.className='';" style="cursor:pointer;">Patients</td>
Chrome:
<td id="ctl00_MainMenu-menuItem010" onclick="javascript:skm_closeSubMenus(document.getElementById('ctl00_MainMenu'));location.href='../Nurse/nurses_patients.aspx';" onmouseover="javascript:skm_mousedOverMenu('ctl00_MainMenu',this, document.getElementById('ctl00_MainMenu'), false, '');" onmouseout="javascript:skm_mousedOutMenu('ctl00_MainMenu', this, '');this.className='';" style="cursor:pointer;">Patients</td>
Beachten Sie die zusätzliche <Schrift> und <b> Tags in der IE-Version. Dies ist eine alte App, die ich gerade mache. Es verwendet ein Skm-Menü-Steuerelement und die Fett- und Verdana-Schriftart sind explizit in den Attributen des Steuerelements festgelegt.
<SKM:menu id="MainMenu" runat="server" Cursor="Pointer" ItemPadding="7" Font-Bold="True" Font-Size="12px"
Font-Names="Verdana" ItemSpacing="0" BorderColor="Black" BorderWidth="1px" BorderStyle="solid" GridLines="Both"
BackColor="silver" Layout="Horizontal">
<SelectedMenuItemStyle ForeColor="Red" BackColor="White" />
</SKM:menu>
verwirrend mich Weiterhin ist dies der html sehen wir mit Blick Quelle mit IE9:
<td id="ctl00_MainMenu-menuItem010" onclick="javascript:skm_closeSubMenus(document.getElementById('ctl00_MainMenu'));location.href='../Nurse/nurses_patients.aspx';" onmouseover="javascript:skm_mousedOverMenu('ctl00_MainMenu',this, document.getElementById('ctl00_MainMenu'), false, '');skm_shimSetVisibility(true,'ctl00_MainMenu-menuItem010-subMenu');" onmouseout="javascript:skm_mousedOutMenu('ctl00_MainMenu', this, '');this.className='';" style="cursor:hand;">Patients</td>
Ich versuche, nach unten zu verfolgen, ob es der Server verschiedenen HTML-Rendering auf der Grundlage des Useragenten oder wenn Die Browser versuchen, schlau zu sein, indem sie Änderungen während des Betriebs vornehmen und die "bereinigte" Version anzeigen, wenn Sie die Quelle anzeigen. Hoffentlich ist es keine Kombination von beidem.
Bearbeiten: Ich (oder eher der Kunde) bemerkte dies nicht, bis ich den Host von einem Win2k3-Server auf einen Win2k3 R2-Server migriert. Wenn ich den R2-Server von IE10 aus betrete, erhalte ich diese zusätzlichen Tags. Wenn ich den Nicht-R2-Server von IE10 aus betrete, erhalte ich diese Tags nicht. Exact gleichen Code und beide IIS6.
Mehr als wahrscheinlich, macht die Steuerung selbst eine Form der Browser-Erkennung, dann Styling geeignet. Es ist eigentlich ein guter Weg für sie, die Rückwärtskompatibilität aufrechtzuerhalten - obwohl es natürlich schwieriger für einen Entwickler ist, sie zu überschreiben. – Rake36