ASP.NET WebForms プロジェクトでいくつかの相互互換性の問題を追跡しており、いくつかの奇妙な動作に出くわしています。異なるブラウザーで同じページにアクセスすると、異なる結果が得られます。これは非常に頻繁に発生します。このケースで興味深いのは、さまざまなブラウザーでソースを表示すると、さまざまな html が表示されることです。
IE10:
<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>
クロム:
<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>
IE バージョンの追加の <font> タグと <b> タグに注意してください。これは私がメンテナンスを行っている古いアプリです。これは skm メニュー コントロールを使用しており、太字と Verdana フォントはコントロールの属性で明示的に設定されています。
<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>
さらに困惑したのは、これが IE9 を使用したソースの表示で表示される html です。
<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>
サーバーが UserAgent に基づいて異なる html をレンダリングしているのか、それともブラウザーがオンザフライで変更を加えてソースを表示するときに「クリーンアップ」バージョンを表示することでスマートにしようとしているのかを突き止めようとしています。うまくいけば、それは両方の組み合わせではありません。
編集: 私 (または顧客) は、ホストを Win2k3 サーバーから Win2k3 R2 サーバーに移行するまで、これに気付きませんでした。IE10 から R2 サーバーにアクセスすると、追加のタグが取得されます。IE10 から R2 以外のサーバーにアクセスすると、それらのタグが取得されません。まったく同じコードと IIS6 の両方。