タイトルが示すように、実行時にページごとにDoctypeを挿入しようとしています。
このアプリケーションは、膨大な数のコンテンツページを持つ単一のマスターを使用するため、当然asp:contentplaceholder
、マスターにコントロールを挿入asp:content
し、コンテンツページにコントロールを使用してみました。これは、ソースを表示するとdoctype要素が表示されるという点で機能しますが、ブラウザ(IE8)がなんらかの理由でQuirksモードで実行されているという点では機能しません。
マスターのプレースホルダーは次のとおりです。
<asp:contentplaceholder id="doctype" runat="server" />
このページのコンテンツパネルは次のとおりです。
<asp:content contentplaceholderid="doctype" runat="server" >
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
</asp:content>
置換はサーバー側で行われる必要があるため、これが機能しない理由については少し戸惑っています。その後、出力はdoctypeが既に配置された状態でブラウザーに送信されます...
なぜ私はこれをしているのですか?
マスターでDoctypeを指定すると、割り当てられたタスクの作業を開始する前に、膨大な数のコンテンツページに移動して修正する必要があるため、これを行っているだけです。特定のコンテンツページを介してDoctypeを挿入する方法を理解できれば、完成するまで一度に1ページずつ効果的に修正できます。
これはどのブラウザに影響しますか?
InternetExplorer8が私たちの主なターゲットです。皮肉なことに、挿入されたDoctypeを効果的に無視しているのはブラウザです。document.doctype
DOMがロードされた後、実行時にチェックすると、が返されnull
ます。
Firefoxの動作は異なります。この手法は実際にはFirefoxで機能しますが、すべてのユーザーがInternet Explorer 8で立ち往生しているため、実際には役に立ちません。