Come si conserva valori variabili statiche nella funzionalità JavaScript di postback?
-
23-09-2019 - |
Domanda
ho questo esempio riportato di seguito:
<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>
Quando clicco post-indietro sulla pagina, ho scoperto che il -che variabile inizializzata è definita sulla funzione itself- sta perdendo il suo valore e diventando 'undefined' di nuovo.
E 'possibile mantenere quei valori statici una volta che sono definiti e renderli influenzato da eventuali spalle un commento sulla pagina?
Soluzione
Si poteva aggiungere come stringa di query o tenerli in un cookie.
Altri suggerimenti
Forse si vuole fare qualcosa di simile. Penso anche che si sta confondendo funzione di test con oggetto di prova.
var initialized = false;
function test(){
if ( !initialized){
initialized = true;
}
};
alert(initialized); // false
test();
alert(initialized); //true
javascript sta per essere nuovamente eseguito il postback come la pagina viene ricaricata (a meno che non si sta utilizzando i pannelli di aggiornamento).
per preservare un valore di lato client, scrivere il valore in un campo nascosto ASP utilizzando JS, e non rendere il javascript se IsPostBack è vero in modo che non ottiene sovrascritto il postback
Credo che con parziale-palo è un modo pure.
Se non è possibile, solo utilizzando Java script penso cookie possono essere un altro modo, purché non sono attivate delle dall'utente.
La mia sensazione è il modo migliore è quello di progettare la pagina in un modo che non avrei bisogno di conservarlo:)
Si potrebbe aggiungere un campo nascosto e impostare il valore di questo? Credo che in questo modo sarà conservata nel ViewState, e si può caricare il proprio valore di nuovo nella vostra variabile con qualcosa di simile:
var p = '<% = blah.Text%>';