8

最近、ASP.NET Webアプリケーションで、ユーザーエージェントを空の文字列に設定した場合(FireFoxプラグインを使用してユーザーエージェントをスプーフィングした場合)、ASP.NETはポストバックの実行に必要なJavaScriptを生成しないことに気付きました。具体的には__doPostBack(a, b)、JavaScriptから関数を呼び出そうとすると、関数が未定義であるというエラーが表示されます。

すべてのブラウザにユーザーエージェントがあることを理解しているので、これはそれほど頻繁には発生しませんが、問題の本質は依然として存在します。認識されていない、または不正な形式のユーザーエージェントが、依存している場合にWebアプリケーションを使用できなくする場合があります。ポストバック。

これは、この質問に似ています。ASP.netは一部のユーザーエージェントのJavaScriptを生成しませんが、正しく読んでいると、認識されない各ユーザーエージェントをケースバイケースで修正し、別のブラウザーとしてマスクするように見えます。私の懸念は個々のユーザーエージェントではなく、特定のユーザーエージェントが私のアプリケーションを使用できず、エラーがサーバーではなくjavascriptで発生するため、私にはわかりません。

ASP.NETに必要なjavascriptを常に生成させる方法を知っている人はいますか?

4

1 に答える 1

4

ユーザーエージェントに空を設定した場合、または不明なユーザーエージェント文字列を使用した場合、asp.netはDefault.browserディレクトリからファイルを読み取り、Browsersそこでこの場合の対処方法を定義できます。

変更する必要がある行、この場合はjavascriptを使用する行は、次の行です。

        <capability name="jscriptversion"       value="5.6" />
        <capability name="javascript"           value="true" />
        <capability name="javascriptversion"    value="1.5" />

デフォルトでは、falseの場合はjavascript行。ここでコメントしたいのですが、本当に変更する必要があるかどうかはわかりません。ユーザーエージェントになりすました場合は、変更させてください。彼があなたのサイトを気に入ってそれを使用する必要がある場合は、彼が使用しているブラウザの処理方法を教えてください。一方、これが可能である場合は、少なくともほとんどのアクションで、JavaScriptがなくてもサイトが機能するように注意する必要があります。

たとえば、リンクボタン(_doPostBackを使用)を避け、ポストバックボタンを使用することをお勧めします。GridViewやその他のページングにも_doPostBackを使用していることは知っていますが、それでも問題ありませんが、JavaScriptがなくても動作できる優れたサイトの1つです。

いくつかの同様の質問:
__ doPostBackは、IE10のDotNetNukeWebサイトでは定義されていません

そしてこのブログ:バグと修正:ASP.NETはIE10を検出できず、_doPostBackが未定義のJavaScriptエラーであるか、FF5スクロールバーの位置を維持します

于 2012-12-24T22:54:48.600 に答える