Wie statische Variablenwerte in JavaScript-Funktionen auf Postbacks erhalten?
-
23-09-2019 - |
Frage
Ich habe diese Probe unter:
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<script type="text/javascript">
function test(){
if (test.initialized=='undefined'){
test.initialized = 'true';
}
alert(test.initialized);
};
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:Button ID="btnPostBack" runat="server" Text="Post back" OnClientClick="test()" />
</asp:Content>
Wenn ich Post-back auf der Seite klicken, fand ich heraus, dass die Variable initialisiert -die auf die Funktion definiert ist itself- seinen Wert verliert und immer ‚undefined‘ wieder.
Ist es möglich, diese statischen Werte zu halten, sobald sie definiert sind und sie von irgendwelchen Post Rücken auf der Seite nicht betroffen machen?
Lösung
Man könnte sie als Query-String hinzufügen oder sie in einem Cookie halten.
Andere Tipps
Vielleicht wollen Sie so etwas wie dies zu tun. Ich denke auch, dass Sie Testfunktion mit Testobjekt sind verwirrend.
var initialized = false;
function test(){
if ( !initialized){
initialized = true;
}
};
alert(initialized); // false
test();
alert(initialized); //true
Sie Javascript wird erneut ausgeführt auf Postbacks wie die Seite neu geladen wird (es sei denn, Sie Update-Panels verwenden).
einen Client-Seite Wert erhalten, schreiben Sie den Wert in ein asp versteckten Feld JS verwenden, und Sie machen nicht das Javascript, wenn IsPostBack wahr ist, so dass es nicht überschrieben bekommt auf Postback
Ich denke, mit Partial-Post zurück ist ein Weg, wie gut.
Wenn es nicht möglich ist, nur mit Java-Skript Ich denke, Cookies eine andere Art und Weise so lang sein können, da sie nicht von durch den Benutzer gedreht werden.
Mein Gefühl ist der beste Weg, um die Seite in einer Weise zu gestalten, ist, dass ich nicht brauchen würde, um es zu speichern:)
Sie könnten ein verstecktes Feld hinzufügen und den Wert dieser eingestellt? Ich denke, diese Art und Weise in dem Ansichtszustand erhalten bleiben werden, und Sie können den Wert zurück in Ihre Variable mit so etwas wie laden:
var p = '<% = blah.Text%>';