2017-04-02 2 views
0

Ich benutze das alte System, entwickelt auf Framework 1.0, und jetzt auf framework 2.0 Quellcode läuft:Postback mit setTimeout Funktion mit falsch?

<select name="DropDownList1" AutoPostBack="true" id="DropDownList1" runat="server"> 
    <option selected="selected" value="One">One</option> 
    <option value="Two">Two</option 
</select> 

generiert html:

<select name="DropDownList1" onchange="javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0)" id="DropDownList1"> 
    <option selected="selected" value="One">One</option> 
    <option value="Two">Two</option> 
</select> 

Sein nicht arbeiten, bis ich Anführungszeichen um __doPostBack entfernen . Warum? Ich erhalte einen JavaScript-Fehler 1032: Ungültiges Zeichen. Wie mache ich es funktionieren? Danke!

+2

Dies sollte funktionieren, in dem Sinne, dass die Anführungszeichen kein Problem sind: 'setTimeout' erlaubt ein String-Argument, das ausgewertet wird. Auf welches Problem stoßen Sie? * "Es ist nicht Arbeit" * ist nicht sehr aufschlussreich. – trincot

+0

Ich habe Ihren Code ausprobiert und erhalte keinen solchen Fehler. Können Sie eine Geige bereitstellen, die das Problem reproduziert? – trincot

Antwort

0

hier gefunden, nachdem eine Stunde verbracht zu lösen: https://groups.google.com/forum/#!topic/microsoft.public.scripting.vbscript/q_Yp5Ngczeo

Antwort: Wenn Sie einen VBScript-Code-Block vor jedem anderen Codeblock auf einer ASPX-Seite enthalten, wird fehlschlagen die folgende Anweisung in IE (und der Fehler ist alles andere als offensichtlich, da es untrappable ist und sagt nur, dass es eine ungültiges Zeichen in Zeile 1, Zeichen 2):

„Javascript: setTimeout ('__ doPostBack (\' anyASPXcontrol \ '\' \ ')', 0) "

Dies ist ein Fehler in IE 6 und möglicherweise früheren Versionen (Ich habe nur v6 bis spielen mit.) Ich weiß nicht, ob es IE 7 betrifft, wie ich das zum Testen in letzter Zeit nicht installiert. Beachten Sie, dass, obwohl das Präfix "javascript:" verwendet wird, die setTimeout-Funktion davon ausgeht, dass sie eine VBScript-Funktion aufruft, vermutlich weil der erste Skriptblock ein VBScript-Block ist.

+0

Für die Zukunft, denke ich, ist es wichtig zu beachten, dass dies genau der Grund ist, warum Sie viel detailliertere Informationen in Ihrer Frage bereitstellen müssen. Es gibt so gut wie keine Chance, dass jemand anders das herausgefunden hätte, weil Sie Ihre Frage nicht mit wichtigen Informationen beantwortet haben. Sie haben IE6 nicht erwähnt, Sie haben nicht erwähnt, VBScript zu verwenden, und Sie haben nur einen kryptischen Verweis auf "Framework" 1.0 und 2.0 gemacht. Jetzt können wir vielleicht erraten, über welchen Rahmen Sie sprechen, aber Sie würden es viel einfacher machen, Ihnen zu helfen, wenn Sie spezifischer wären. – Thor84no