ASP.netは、一部のユーザーエージェントのためにはJavaScriptを生成しません

StackOverflow https://stackoverflow.com/questions/917688

質問

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

.NETはInfactは単独の情報のその部分に基づいて、ポストバックのために必要なコードを生成していませんでした。

iPhoneおよびその他のマルチメディア機器ではJavaScriptを解釈することができるので、ASP.netを実行するために、サーバーが生成するJavaScriptに依存している任意のアプリケーションを破壊されているため、

私は、しかし、これは好きではありません。

ですから、社会がそれを許可する場合は...私は...なぜASP.netは、特定のブラウザのJavaScriptを生成しませんし、私の公式の質問を変更したいのですが、どのように私はオフ、この「機能」をオンにすることができます。

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

私は奇妙な問題を持っています。私は仕事で私のコンピュータに私のリモートホストからのいくつかの作業コードをコピーしました。私はページを使用しようとすると私はjavascriptのエラーを取得しています。

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

Iいくつかの出力ページのソース、確かに何のサーバ側が存在しない場合はJavaScriptを生成します。

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

<%@ 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 =真でテキストボックスを追加しました。

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

************** **************詳細情報 私は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でソースのみ示しているがます:

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

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

デスクトップとノートパッドの開口部は、同じことを明らかに...

にWebページを保存します
役に立ちましたか?

解決

問題は、ASP.netは、iPhoneなどの未知のブラウザを...扱うデフォルトの方法です。それは未知のブラウザはJavaScriptを使用できると仮定していいだろうにもかかわらず...あなたはブラウザがweb.configファイルまたはmachine.configにのセクションで持っている何の機能を指定できます。

http://slingfive.com/pages/code/browserCaps/ のチェックアウトasp.netの更新されたbrowsercaps設定ファイル

ここGECKOベースのブラウザ(ネットスケープ6+、のMozilla / Firefoxの、...)

と一致する場合の例であります
<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>

他のヒント

Firefoxを再インストールする前に、

、デバッグモード(私はそれがデバッグモードと呼ばれると思う)でそれを実行します。これは、すべてのプラグインをオフにし、それはあなたが少しそれを絞り込むことができます。どのようなクロムやSafariなどの他のブラウザについてはどうですか?

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

あなたは...ローカルホストが異なるセキュリティ権限を持っていないことを確認し、JSは、他のすべてのサイト上で動作していることを確認し、Firefoxを再インストールしようとするかもしれ

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

編集:より多くの情報から、それはそれは間違ってあなたのmachine.configのブラウワー能力セクションでのFirefoxを識別していることが考えられます。 (またはweb.configファイル)。

また、JavaScriptはFirefoxでオフになっているので、.NETはJavascriptのものをレンダリングない点が存在しないことを決定され、そしてそのようなことがあれば、取り扱いをポストバックするために異なるアプローチを使用する必要があることである可能性があります。

あなたがASP.NET Webサーバーにインストールされているか?

それはあなたがそれを必要と何らサーバー側のイベントを持っていないので、__doPostBack()関数が生成されていないように見えます。

ASP.NETを使用すると、イベントリスナーは、それが正しく機能するためにそれを必要とする加入がある場合のみ__doPostBack()関数を生成するのが好きです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top