Question

******************** Edit 2 ********************** Je me suis le problème ... Mais je n'aime pas les implications. Je testais notre application mobile iPhone ciblé plus tôt et en utilisant un plug-in pour masquer l'agent utilisateur de Firefox chaîne comme un iPhone.

.Net a été enfait ne génère pas le code requis pour le dos de poste en fonction de cette information seule.

Je n'aime pas cependant, parce que depuis l'iPhone et d'autres appareils multimédias peuvent interpréter javascript, ASP.net enfreint toute application qui repose sur le serveur généré javascript pour exécuter.

Ainsi, si la communauté permettra ... Je voudrais changer ma question officielle ... Pourquoi ne pas générer ASP.net javascript pour les navigateurs spécifiques et comment puis-je désactiver cette « fonction » off.

*************** End Edit 2 ***************

J'ai un problème bizarre. J'ai copié le code de travail de mon hôte distant sur mon ordinateur au travail. Lorsque je tente d'utiliser la page Je reçois une erreur javascript

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

Quand je peu la source de la page de sortie, bien sûr il n'y a pas assez côté serveur généré javascript.

J'ai essayé de créer une page 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>

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

Obtenir la même erreur.

J'ai essayé de redémarrer (hey, il travaille la moitié du temps), vidé tout de App_Code, global.asax et web.config, a ajouté une zone de texte avec autopostback = true ... Je suis d'idées.

Quelqu'un peut-il faire la lumière sur ce qui se passe ici?

Plus d'informations ************** ************** Je viens tout essayé à nouveau dans IE et il fonctionne comme prévu, la source de page:

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

Alors que la source dans Firefox affiche uniquement:

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

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

Enregistrement des pages Web sur le bureau et l'ouverture dans le bloc-notes révèle la même chose ...

Était-ce utile?

La solution

Le problème est la méthode par défaut ASP.net traite les navigateurs inconnus ... comme l'iPhone. Même si ce serait bien d'assumer les navigateurs inconnus pourraient utiliser javascript ... vous pouvez spécifier les capacités qu'un navigateur a la section de web.config ou machine.config.

Consultez http://slingfive.com/pages/code/browserCaps/ un fichier de configuration de browserCaps mis à jour pour asp.net

Voici un exemple d'un cas pour correspondre à base GECKO navigateurs (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>

Autres conseils

Avant de réinstaller Firefox, exécutez en mode débogage (je pense qu'il est appelé mode de débogage). Il désactive tous les plug-ins et qui peut vous aider à le réduire un peu. Qu'en est-il d'autres navigateurs comme Chrome ou Safari?

D'après les nouvelles informations, je pense qu'il est clair que ce problème est un Firefox (peut-être vous avez un add-on bloquer JS), et non une question de programmation. Je reçois bons résultats avec votre code en utilisant VS 2008 et FF3 sur XP Pro, comme je l'attendrais sera plus quelqu'un d'autre essayer.

Vous pouvez essayer de réinstaller Firefox, assurez-vous que JS fonctionne sur tous les autres sites, assurez-vous que localhost ne dispose pas des autorisations différentes de sécurité ...

Vous avez AutoEventWireup défini sur false, mais pas passer outre de OnInit pour fixer l'événement. Essayez de changer le AutoEventWireup à true.

Edit: De plus d'informations, il pourrait être qu'il identifie correctement Firefox dans la section des capacités de Brower de votre machine.config. (Ou web.config).

Il se pourrait aussi que JavaScript est désactivé dans Firefox et .NET est ainsi déterminer qu'il n'y a pas de point de rendre les choses Javascript et devrait utiliser une approche différente de la manipulation postback, s'il y a une telle chose.

Êtes-vous sûr que vous avez ASP.NET installé sur votre serveur web?

Il ressemble à la fonction de __doPostBack() n'est pas généré parce que vous avez pas d'événement côté serveur qui le nécessitent.

ASP.NET aime générer uniquement la fonction __doPostBack () lorsque vous avez des écouteurs d'événement qui aurait besoin souscrit à fonctionner correctement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top