0

ASP.NET でページをレンダリングすると、次のようになります。

</head>
<NOSCRIPT>
<meta http-equiv="REFRESH" content="0;URL=/Default.aspx?id=84&epslanguage=en-GB&jse=0" />
</NOSCRIPT>
<title>Page title goes here.</title>
<body>

私のマスターページは次のようになります。

<title>Page title goes here.</title>
</head>
<body>

だから私が尋ねているのは、一体どこからこの更新メタ タグが来たのか、なぜそれを私の head タグと body タグの間に入れたのか、そしてなぜ私のページ タイトルが head の外に飛び出してしまったのかということです!

ページの生成されたソースを firebug で表示すると、head タグ内に title タグとこの新しいメタ タグが表示されますが、任意のブラウザーでソースを表示すると、上記のようになります。wget を使用してページをスクレイピングすると、上記のように正しく出力されません。

ブラウザがこれをさまざまな方法で解釈している理由と、さらに重要なことに、この新しいメタタグがどこから来たのかについてのアイデアはありますか?

ありがとう!カール。

編集:

やあ!

返信ありがとうございます。非常に有益です。

問題は次のコード行にあることがわかりました。

Page.Header.Controls.Add(ctrl);

この行を使用して謎のメタ タグを入れると、head タグの外に出ます。これをコメントアウトすると、タイトルタグが正しい場所に戻り、すべてがうまくいきます!

さらに考えはありますか?

ありがとう!

カール。

4

3 に答える 3

0

多くの場合、要素が適切に閉じられていない場合です。ほとんどのブラウザは、意味のあるようにマークアップを調整しようとしますが、ほとんどの場合、マークアップは誤って解析されます。

おそらく、マスターページ(およびそれを使用するWebフォーム)をもっと共有する必要があります!

于 2010-07-21T10:39:49.927 に答える
0

HEAD タグに runat="server" が含まれていない可能性がありますか?

于 2010-07-21T15:49:10.943 に答える
0

ブラウザーが異なる解釈をする理由については、2 つの答えがあります。まず、あなたが言うようにfirebugの出力は生成されたソースです。つまり、すでに一定量の処理が完了しており、明らかに Firefox が何らかの魔法をかけて、「それはメタ タグとタイトル タグです。ヘッダーにあるはずなので、そこに配置します」と言っています。

生のソースを比較している他のブラウザは、ブラウザがそれを理解しようとする前のように聞こえます。未加工のソースを firefox (ctrl-u) で表示した場合も同じ結果になると思います。

私はすべてのブラウザがあなたがFirefoxで行っていると説明したのとほぼ同じことをすることを期待していましたが、そうでない場合、それは本当に心配する必要はありません. このような無効な HTML が受信された場合、ブラウザーには何をすべきかについての実際のルールがありません。つまり、ブラウザは、ユーザーの意図を推測しようとすることから、それを完全に無視することまで、やりたいことを何でもできるということです。

原因については、epslanguage クエリ パラメータは episerver からのものです。それがリクエスト URL に含まれているかどうかはわかりません。そのため、永続化されているだけであるか、episerver がページにリダイレクトしようとしている可能性があります。デフォルトを想定するのではなく、明示的な言語を使用します。残念ながら、私はエピサーバーに詳しくないので、これ以上具体的に言うことはできません.

もちろん、サーバー側にこれを引き起こしている何かがあることは間違いありません。

関心のないすべてのページ、または特定の 1 つだけ、または特定の状況でのみ取得しますか?

于 2010-07-21T09:31:50.997 に答える