Domanda

******************** Modifica 2 ********************** Ho capito il problema ... Ma non mi piacciono le implicazioni. Stavo testando il nostro iPhone mirata applicazione mobile in precedenza e l'utilizzo di un plugin per mascherare Stringa agente utente di Firefox come un iPhone.

Net è stata infatti non genera il codice necessario per pubblicare spalle sulla base di quel pezzo di informazione da sola.

Non mi piace questo però, perché da quando l'iPhone e altri dispositivi multimediali in grado di interpretare JavaScript, ASP.net sta rompendo tutte le applicazioni che si basa su un server generato JavaScript per funzionare.

Quindi, se la comunità lo permetterà ... Mi piacerebbe cambiare la mia domanda ufficiale ... Perché sarà ASP.net non generano javascript per browser specifici e come posso trasformare questa "funzione" off.

*************** End Modifica 2 ***************

Ho un problema strano. Ho copiato un certo codice di lavoro dal mio host remoto per il mio computer al lavoro. Quando cerco di utilizzare la pagina che sto ricevendo un errore di javascript

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

Quando ho pochi il sorgente della pagina di uscita, abbastanza sicuro non v'è alcun lato server generato javascript.

Ho cercato di creare una semplice pagina:

<%@ 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>

Codebehind:

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

Come lo stesso errore.

Ho provato a ripartire (hey, funziona la metà del tempo), ripulito tutto da App_Code, global.asax e web.config, ha aggiunto una casella di testo con AutoPostBack = true ... Sono a corto di idee.

Qualcuno può fare luce su quello che sta succedendo qui?

************** Ulteriori informazioni ************** Ho appena provato di nuovo tutto in IE e funziona come previsto, la sorgente della pagina mostra:

<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>

Mentre la fonte in Firefox mostra solo:

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

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

Salvataggio delle pagine web sul desktop e l'apertura nel blocco note rivela la stessa cosa ...

È stato utile?

Soluzione

Il problema è il modo di default ASP.net tratta browser sconosciuti ... come l'iPhone. Anche se sarebbe bello per assumere i browser sconosciuti potrebbero usare javascript ... è possibile specificare quali funzionalità che un browser ha nella sezione del web.config o machine.config.

http://slingfive.com/pages/code/browserCaps/ un file di configurazione browserCaps aggiornato per asp.net

Ecco un esempio di un caso in modo che corrisponda GECKO Based Browser (Netscape 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>

Altri suggerimenti

Prima di reinstallare Firefox, eseguirlo in modalità debug (credo si chiami la modalità di debug). Si spegne tutti i plugin e che può aiutare a limitare giù un po '. Che dire di altri browser come Chrome o Safari?

In base alle nuove informazioni, penso che sia chiaro che questo è un problema di Firefox (forse si dispone di un add-on di blocco JS) una questione di programmazione, e non. Ottengo buoni risultati con il codice utilizzando VS 2008 e FF3 su XP Pro, come mi aspetto sarà molto chiunque altro provarlo.

Si può provare a reinstallare Firefox, assicurarsi che JS funziona su tutti gli altri siti, assicurarsi localhost non dispone di diverse autorizzazioni di protezione ...

Hai AutoEventWireup impostato su false, ma non Override di OnInit per collegare l'evento. Provare a cambiare il AutoEventWireup su true.

Modifica: Dal ulteriori informazioni potrebbe essere che si sta identificando in modo non corretto di Firefox nella sezione capacità brower del vostro machine.config. (O web.config).

Potrebbe anche essere che JavaScript è disattivato in Firefox, e quindi .NET è determinare che non v'è alcun punto di rendere la roba Javascript, e dovrebbe utilizzare un approccio diverso al postback manipolazione, se c'è una cosa del genere.

Sei sicuro di aver ASP.NET installato sul vostro server web?

Sembra che la funzione __doPostBack() non viene generato perché non hai gli eventi sul lato server che lo richiedono.

ASP.NET piace per generare solo la funzione __doPostBack () quando si dispone di listener di eventi sottoscritte che avrebbe bisogno di funzionare correttamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top