2012-12-24 11 views
8

私のASP.NET Webアプリケーションで、ユーザーエージェントを空の文字列に設定すると(FireFoxプラグインを使用してユーザーエージェントをスプーフィングする) ASP.NETは、ポストバックを実行するために必要なjavascriptを生成しません。具体的には、JavaScriptから__doPostBack(a, b)関数を呼び出すと、関数が未定義であるというエラーが発生します。すべてのユーザーエージェントのJavaScriptを強制的に生成する

私はすべてのブラウザにユーザエージェントがあることを理解しています。これは頻繁には起こりませんが、問題の本質はまだあります。あなたがポストバックに頼っている場合。

ASP.net not generating javascript for some User Agentsと似ていますが、私が正しく読んでいると、認識できないユーザエージェントを別のブラウザで修正し、別のブラウザとしてマスクするようです。私の懸念事項は個々のユーザーエージェントでは少なくなります。そのため、特定のユーザーエージェントは自分のアプリケーションを使用できないという全体的な事実により、エラーはサーバー上ではなくjavascriptで発生するため、わかりません。

私はASP.NETが常に必要なJavaScriptを生成するように強制する方法を知っていますか?

+0

ユーザーが実際にこの問題が発生したことがありますか?そうでない場合は、ユーザーが実際に遭遇した他の問題があるかどうか尋ねます。 –

+0

@John - 誰も報告していないが、私たちのウェブアプリケーションは電子商取引を扱っているので、問題を経験した平均的なユーザーは通常、私たちに連絡するという手間を経ないだろう。私たちはまた、まったく新しいリーグを可能なユーザエージェントに招待するモバイルストアを立ち上げました。できるだけ多くの問題を避けたいと思います。 – Adam

+1

未処理の例外をログに記録しておきたいと思います。それ以外の場合は、競合他社が自分のサイトを改善するために費やしている間に、顧客が経験していない問題を解決する時間を費やす危険があります。 –

答えて

4

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

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

javascriptのライン場合:

を変更する必要があるラインと、この例では、もののことであるjavascriptの使用します。私は、あなたが本当にそれを変更する必要があるかどうか、ある人がユーザエージェントを偽装している場合は、それをやりなおすようにすれば、それほど確かではないとここでコメントしたいと思います。彼があなたのサイトを好きで、それを使う必要があるなら、彼が使っているブラウザをどう扱うかを教えてください。あなたができる場合は、他の手からあなたが注意しなければならない、あなたのサイトは、少なくともjavascriptを使用しても、ほとんどの場合、あなたがやっている。

リンクボタン(_doPostBackを使用する)を避け、ポストバックボタンを使用する方が良いです。私はGridViewと他のもページングのための_doPostBackを使用することを知っている...それで大丈夫ですが、より良い1つの良いサイトでも、JavaScriptを使用して作業することができました。

いくつかの類似の質問:
__doPostBack is undefined on DotNetNuke website for IE 10

とこのブログ:Bug and Fix: ASP.NET fails to detect IE10 causing _doPostBack is undefined JavaScript error or maintain FF5 scrollbar position

関連する問題