Javascript a runtime

venerdì 26 maggio 2006 - 10.40

contiello Profilo | Senior Member

Salve ragazzi ho una richiesta da farvi....
Immaginate di avere la seguente situazione ... in una pagina aspx avete la necessità di generare un codice javascript a runtime...
esempio un alert.

io attualmente risolvo cosi la situazione:
metto nella pagina aspx un controllo label (webform) e sulla load della pagina scrivo una cosa del genere.

........
if codice = "" then
me.label1.text = "<script language=javascript>alert('KO');</script>"
else
me.label1.text = "<script language=javascript>alert('OK');</script>"
end if
.....

La mia domanda è questa : Esiste un metodo o un oggetto preposto per questo tipo di problematica???

O cmq esiste un approccio corretto per questo tipo di problematiche??

Grazie!

micto27 Profilo | Senior Member

Prova ad utilizzare i seguenti metodi forniti dalla classe Page:

IsClientScriptBlockRegistered
RegisterClientScriptBlock

ciao, Michele

contiello Profilo | Senior Member

Grazie per la risposta....
iin pratica ripete la gestione che facevo io a meno del controllo IsClientScriptBlockRegistered.
Io pensavo pero' esistesse un controllo lato server che dato in input un javascript facesse delle operazioni di controllo.
Mi spiego meglio create una pagina aspx nuova e sulla load scrivete il seguente codice:

Dim scriptString As String
scriptString = "<script language=JavaScript>"
scriptString += "alert('il mare è bello!');"
scriptString += "</script>"
If (Not IsClientScriptBlockRegistered("clientScript")) Then
RegisterClientScriptBlock("clientScript", scriptString)
End If

fate partire il progetto ed il risultato sarà un messaggio a video che dice "Il mare è bello!"

fin qui tutto ok

sostituite il codice precedente con questo

Dim scriptString As String
scriptString = "<script language=JavaScript>"
scriptString += "alert('il mare e' bello!');"
scriptString += "</script>"
If (Not IsClientScriptBlockRegistered("clientScript")) Then
RegisterClientScriptBlock("clientScript", scriptString)
End If

è uguale a meno della frase che da "Il mare è bello!" si è trasformata in "Il mare e' bello!"

chiaramente la presenza di un terzo apice (') all'interno della frase provoca un errore javascript.

Qui ritorna la mia domanda .... non eiste un oggetto che riceva in ingresso un codice javascript e mi restituisca lo stesso esente da errori???

mi immaginerei una cosa del genere


Dim scriptString As String

scriptString = "<script language=JavaScript>"
scriptString += "alert('il mare e' bello!');"
scriptString += "</script>"
If (Not IsClientScriptBlockRegistered("clientScript")) Then
RegisterClientScriptBlock("clientScript", scriptString)
End If
'fin qui ho creato il codice javascript come sempre

'dichiarazione dell'istanza dell'oggetto
dim objscript as system.web.ScriptProcessor(nome inventato)
'valorizzazione del parametro codeScript dell'oggetto con il mio codice javascript
objscript.codeScript = scriptString
'Eseguo il metodo che controlla la sintassi
objscript.Process()
'Reimposto la mia variabile scriptString con il valore processato dall'oggetto.
scriptString=objscript.codeScript
'mi aspetto all'interno di scriptString la seguente variazione
invece che alert('il mare e' bello!'); , alert('il mare e\' bello!');
che evita l'errore.
Spero di essermi spiegato ....

Ciao grazie












fedecheller Profilo | Junior Member

Per non avere errori javascript il tuo testo all'interno dell'alert deve essere:

alert('Il mare e\' bello!');

basta sostituire ' con \'


MUSIC IS FREE, DRINK ARE TO PAY, STAY TILL LATE BUT SLEEP AWAY
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5