2009-05-27 6 views
5

********************編集2のためにJavaScriptを生成しません *******私はこの問題を考え出した...しかし、私は意味を好きではありません。私は、私たちのiPhoneは、以前のモバイルアプリケーションをターゲットにテストし、iPhoneなど、Firefoxのユーザーエージェント文字列をマスクするためのプラグインを使用していました。ASP.netは***************一部のユーザーエージェント

.Netは、その情報だけに基づいてポストバックに必要なコードを生成していませんでした。

しかし、iPhoneや他のマルチメディアデバイスがjavascriptを解釈できるので、ASP.netはサーバーの生成に依存するすべてのアプリケーションを実行するためJavaScriptを実行しているため実行できません。

コミュニティで許可されている場合は正式な質問に変更したい... ASP.netが特定のブラウザ用のJavaScriptを生成しないのはなぜですか、どうすればこの「機能」をオフにすることができますか?

***************エンド編集2 ***************

私は奇妙な問題を持っています。私は仕事で私のコンピュータに私のリモートホストからのいくつかの作業コードをコピーしました。私はページを使用しようとすると、私はいくつかの出力ページのソースは、確かに何もサーバー側ではJavaScriptを発生していないがあると私はjavascriptのエラー

__doPostBack is not defined 
javascript:__doPostBack('ctl00$ContentPlaceHolder1$login','')()() 

を取得しています。

私は単純なページを作成してみました:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="jsTest.aspx.vb" Inherits="_jsTest" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:TextBox ID="tbTest" runat="server"></asp:TextBox><br /> 
     <asp:LinkButton ID="linkTest" runat="server">LinkButton</asp:LinkButton> 
    </form> 
</body> 
</html> 

分離コード:

Partial Class _jsTest 
    Inherits System.Web.UI.Page 
    Protected Sub linkTest_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles linkTest.Click 
     Response.Write(tbTest.Text) 
    End Sub 
End Class 

は同じエラーを取得します。

私はApp_Code、global.asax、web.configのすべてをクリアして、autopostback = trueのテキストボックスを追加しました。アイデアがありません。

誰もがここで何が起こっているかについていくつかの光を当てることができますか?

*************詳細情報*************** 私はIEですべてをもう一度試しましたが、期待どおりに動作します。ページソースは示しています

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTkxNTA2MDE2NWRkxhZMwlMVwJprcVsvQLJLrTcgaSM=" /> 

<script type="text/javascript"> 
//<![CDATA[ 
var theForm = document.forms['form1']; 
if (!theForm) { 
    theForm = document.form1; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 
//]]> 
</script> 
<div> 
    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwK20LZAAuzRsusGAsz0+6YPxxO+Ewv1XsD5QKJiiprrGp+9a3Q=" /> 
</div> 

Firefoxでソースのみ示しているが:メモ帳でのデスクトップと開口部にWebページを保存する

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTkxNTA2MDE2NWRkxhZMwlMVwJprcVsvQLJLrTcgaSM=" /> 

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwK20LZAAuzRsusGAsz0+6YPxxO+Ewv1XsD5QKJiiprrGp+9a3Q=" /> 

は同じことを明らかに...

+0

私はいくつかの調査をしています...それはweb.configまたはmachine.configのセクションで修正できるもののようです。デフォルトでは未知のブラウザは古いブラウザのように扱われています。 – Birk

答えて

7

問題は、ASP.netがiPhoneなどの未知のブラウザを扱うデフォルトの方法です。未知のブラウザでjavascriptを使うことができると仮定するといいでしょう... Web.configやmachine.configのセクションにブラウザが持つ機能を指定できます。

(...ネットスケープ6+、Mozillaの/ Firefoxの、)ここでasp.net

の更新されたbrowsercaps設定ファイル用http://slingfive.com/pages/code/browserCaps/がGECKOベースのブラウザを一致させる場合の例であるチェックアウト

<case match="^Mozilla/5\.0 \([^)]*\) (Gecko/[-\d]+)(?'VendorProductToken' (?'type'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)))?"> 
       browser=Gecko 
       <filter> 
        <case match="(Gecko/[-\d]+)(?'VendorProductToken' (?'type'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)))"> 
         type=${type} 
        </case> 
        <case> <!-- plain Mozilla if no VendorProductToken found --> 
         type=Mozilla 
        </case> 
       </filter> 
       frames=true 
       tables=true 
       cookies=true 
       javascript=true 
       javaapplets=true 
       ecmascriptversion=1.5 
       w3cdomversion=1.0 
       css1=true 
       css2=true 
       xml=true 
       tagwriter=System.Web.UI.HtmlTextWriter 
       <case match="rv:(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))"> 
        version=${version} 
        majorversion=0${major} 
        minorversion=0${minor} 
        <case match="^b" with="${letters}"> 
         beta=true 
        </case> 
       </case> 
      </case> 
+0

あなたは私にそれを打つ - BrowserCapsは本当にここで問題です - http://owenbrady.net/browsercaps/をチェックしたいかもしれませんもっと最近1.1と2.0の両方のために更新されました - 小道具http://stackoverflow.com/質問/ 431765/asp-net-request-browser-crawler-dynamic-crawler-list/431991#431991これについては、 –

0

がよろしいですあなたにはASP.NETがインストールされていますWebサーバー?

+0

はい、私は私のイベントハンドラがありますサブlinkTest_Click(オブジェクトとしてByVal送信者、ByValを電子System.EventArgsとして)プロテクトのVisual Studio 2008の9.0.30729 Framework 3.5のSP1 – Birk

0

サーバー側のイベントが必要ないため、__doPostBack()関数が生成されていないようです。

ASP.NETは、正常に機能するために必要なイベントリスナーが登録されている場合にのみ__doPostBack()関数を生成するのが好きです。

+0

がlinkTest.Click を処理し使用しています...と私が言ったように、私の家のコンピュータと私のWebサーバー上にあったとき、それは正常に動作していた。 – Birk

+0

おっと、LinkBut​​tonを使用していたことを見落としました。私はそれが念頭に置いてある場合、__doPostBack()メソッドを必要としないButtonコントロールだと思っていました。 また、AutoEventWireupがfalseであるため、そのメソッド自体がコントロールに結びついているようには見えませんが、他の誰かが既にそのことを言いました。 –

1

あなたはAutoEventWireupをfalseに設定しましたが、イベントを添付するためのOnInitのオーバーライドはありません。 trueにAutoEventWireupを変更してみてください。

編集:詳細情報から、machine.configのブラウザー機能のセクションでFirefoxを誤って識別している可能性があります。 (またはweb.config)。

FirefoxでもJavaScriptがオフになっている可能性があります。そのため、.NETはJavaScriptの要素をレンダリングするポイントがないと判断し、ポストバック処理に別の方法を使用する必要があります。

+0

変更はありません...しかし、良い提案です。 – Birk

1

新しい情報に基づいて、これはFirefoxの問題(おそらくアドオンをブロックするJSがある)であり、プログラミングの問題ではないことは明らかです。私はあなたが期待しているように、XP ProでVS 2008とFF3を使用してコードを使って上手くいく結果を得ています。

Firefoxを再インストールする前にあなたは(私はそれがだと思うデバッグモードでそれを実行し、

2

...ローカルホストが異なるセキュリティ権限を持っていないことを確認し、JSは、他のすべてのサイト上で動作することを確認、Firefoxの再インストールを試みることができますいわゆるデバッグモード)。それはすべてのプラグインをオフにし、それはあなたがそれを少し狭めるのを助けることができます。 ChromeやSafariのような他のブラウザはどうですか?

+0

私は問題を見つけ出しました(そして問題を編集しました)テストのために使っていたユーザーエージェントスプーフィングプラグインでした。しかし私はそれが問題であることには満足していません。 – Birk

+0

少なくとも答えを見つけました! – Gromer

関連する問題