Pregunta

********************* ..Pero no me gustan las implicaciones.Anteriormente estuve probando nuestra aplicación móvil dirigida a iPhone y usando un complemento para enmascarar la cadena de agente de usuario de Firefox como un iPhone.

De hecho, .Net NO estaba generando el código requerido para las devoluciones de publicaciones basándose únicamente en esa información.

Sin embargo, no me gusta esto, porque dado que el iPhone y otros dispositivos multimedia pueden interpretar javascript, ASP.net está rompiendo cualquier aplicación que dependa de javascript generado por el servidor para ejecutarse.

Entonces, si la comunidad lo permite...Me gustaría cambiar mi pregunta oficial a...¿Por qué ASP.net no genera JavaScript para navegadores específicos y cómo puedo desactivar esta "función"?

**************** Fin de edición 2 **************

Tengo un problema extraño.Copié un código de trabajo desde mi host remoto a mi computadora en el trabajo.Cuando intento usar la página me sale un error de javascript

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

Cuando busco la fuente de la página de salida, efectivamente no hay javascript generado por el lado del servidor.

Intenté crear una página simple:

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

Código detrás:

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

Obteniendo el mismo error.

Intenté reiniciar (oye, funciona la mitad del tiempo), borré todo desde App_Code, global.asax y web.config, agregué un cuadro de texto con autopostback=true...Se me acabaron las ideas.

¿Alguien puede arrojar algo de luz sobre lo que está pasando aquí?

**************** Más información **************** ¡Acabo de intentarlo todo nuevamente en IE y funciona como se esperaba, muestra la fuente de la página:

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

Mientras que la fuente en Firefox solo muestra:

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

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

Guardar las páginas web en el escritorio y abrirlas en el bloc de notas revela lo mismo...

¿Fue útil?

Solución

El problema es la forma predeterminada en que ASP.net trata a los navegadores desconocidos...como el iPhone.Aunque sería bueno suponer que navegadores desconocidos podrían usar javascript...Puede especificar qué capacidades tiene un navegador en la sección web.config o machine.config.

Verificar http://slingfive.com/pages/code/browserCaps/ para obtener un archivo de configuración de browsercaps actualizado para asp.net

A continuación se muestra un ejemplo de un caso que coincide con los navegadores basados ​​en GECKO (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>

Otros consejos

Antes de reinstalar Firefox, ejecuta en modo de depuración (creo que se llama modo de depuración). Se apaga todos los plugins y que puede ayudar a reducir hacia abajo un poco. ¿Qué pasa con otros navegadores como Chrome o Safari?

Sobre la base de la nueva información, creo que es claro que este es un problema de Firefox (tal vez usted tiene un complemento en el bloqueo de JS), y no una cuestión de programación. Consigo buenos resultados con el código utilizando VS 2008 y FF3 en XP Pro, como yo esperaría lo más cualquier otra persona de intentarlo.

Es posible que vuelva a instalar Firefox, asegúrese de que JS funciona en todos los otros sitios, asegúrese de localhost no tiene permisos de seguridad diferentes ...

Has AutoEventWireup se pone a falso, pero sin anulación de OnInit para unir el evento. Intente cambiar el AutoEventWireup true.

Edit: Desde el más información que podría ser que es la identificación incorrecta de Firefox en la sección capacidades Brower de su machine.config. (O web.config).

También podría ser que JavaScript está desactivado en Firefox, y por lo tanto .NET es la determinación de que no hay punto de hacer que el material Javascript, y debería utilizar un enfoque diferente para la devolución de datos de manejo, si hay tal cosa.

¿Está seguro de haber instalado ASP.NET en el servidor web?

Parece que la función __doPostBack() no se genera porque no tiene eventos del lado del servidor que lo requieran.

ASP.NET le gusta sólo para generar la función __doPostBack () cuando se tiene detectores de eventos suscritos que necesitaría para funcionar correctamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top