Newsgroup: it.comp.lang.javascript
Titolo: Per Nickey & altri guru - Prompt() personalizzato

1st of all: sorry a tutti: è lungo :-(
Ciao, ho letto i tuoi mex di oggi (e mi sono anche espresso dietro a 
Darius), ed ho notato particolarmente i tuoi reply fotocopia :-)
Cmq sono a chiederti una cosa seriamente.
Da Luglio 2001 mi sto battendo con una cosa: volevo pubblicare degli 
script per fare alert(), confirm() e prompt() personalizzati, ma ho tutto 
bloccato (non mi piace lasciare le cose a metà) per colpa di prompt() che 
non funziona con IE per colpa della gestione del focus.
Ho chiesto aiuto anche a Fabiano e Carena (e ne approfitto per rivolgermi 
anche a Catarsi, Darius e Balestra).
Ti riporto i codici: riesci a farlo funzionare?
No reply in privato: le discussioni iniziate nel NG si continuano in 
questa sede.
p.s. Of course devi ricostruire le linee che verranno spezzate dal client 
di news. Per comodità le linee "sensibili" le ho intercalate con un "a 
capo".
p.p.s.s.
E' tutto under construction, quindi non fate caso se c'è qualche 
istruzione "aggratis" :-))
-------- Sorgente della pagina HTML ---
<HTML>
<HEAD>
	<TITLE>JsDir - prompt() personalizzato</TITLE>
<SCRIPT SRC="esempio.js"></SCRIPT>
</HEAD>
<BODY BGCOLOR="#ffffff" TEXT="#000000" LINK="#000000" ALINK="#000000" 
VLINK="#000000" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" 
MARGINHEIGHT="0">
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="100%" 
HEIGHT="100%"><TR><TD ALIGN="center" VALIGN="middle">
<A HREF="javascript:Prompt('Come ti chiami?','prova')">Prova il prompt() 
personalizdzato</A>
</TD></TR></TABLE>
</BODY>
</HTML>
-------------- fine HTML -------
------------------------- sorgente del file incluso "esempio.js" ----
<!--
/* ----------------------------------------
   ! ! ! A T T E N Z I O N E ! ! !
   Questo script e' adatto come esempio
   per la scheda del sito, perche' l'immagine
   viene caricata da una cartella specifica.
   Correggete il path dell'immagine, o usate
   lo script contenuto nel file ZIP.
   -----------------------------------------*/
var pagina="";
function Prompt(testo,funzione)
	{
/* 
=========================================================================
          Variabili personalizzabili                                                                    
*/
	BodyBackgroundColor="#dddddd"; //<------------ Colore di sfondo 
del documento
	BodyFontFace="verdana"; // <------------ Tipo di carattere del 
testo
	BodyFontSize="-2"; // <------------ Altezza del carattere 
		WideChar=5;// <------------ Larghezza caratteri. Vedi nota 
a fine documento o l'articolo all'indirizzo: 
http://www.jsdir.com/staffscripts/script050.asp
	BodyFontStyles="<b>";// <------------ Attributi del carattere. 
Usare i normali codici HTML: <B>, <I>, <U>. I caratteri di chiusura 
vengono generati automaticamente
	Icona="PromptIcon.gif"; // <------------ Immagine nella finestra ( 
!!! Attenzione a posizionarla nella stessa cartella in cui c'e' questo 
file!!! )
	TitoloFinestra="MyPrompt() by JsDir" // <------------ Il testo che 
comparira' nella barra del titolo
 
/*   Fine Variabili personalizzabili
    =====================================================================
====*/
	BSend=BodyFontStyles.replace(/</gi,"</");
	var tar=new Array();maxlen=0;
	tar=testo.split("\n");
	for (i=0;i<tar.length;i++)
		tar[i].length>maxlen?maxlen=tar[i].length:null;
	tab=/\t/gi;testo=testo.replace(tab,"        ");
	acapo=/\n/gi;testo=testo.replace(acapo,"<BR>");
	spc=/ /gi;testo=testo.replace(spc,"&nbsp;");
	ap=/'/gi;testo=testo.replace(ap,"'");
	dap=/\"/gi;testo=testo.replace(dap,"\"");
	wide=maxlen*WideChar+120;
	wide=wide<400?400:wide;
	tall=tar.length*12+280;
	posLeft=parseInt(screen.width-wide)/2;
	posTop=parseInt(screen.height-tall)/2-200;
	MyPrompt=window.open('about:blank','MyPrompt','width='+wide+',heig
ht='+tall+',left='+posLeft+',top='+posTop+',resizable=no,scrollbars=no,st
atus=no,directory=no,menubar=no')
	pagina+="<HTML><HEAD><TITLE>"+TitoloFinestra+"</TITLE></HEAD><BODY 
BGCOLOR='"+BodyBackgroundColor+"' LEFTMARGIN='0' TOPMARGIN='0' 
MARGINWIDTH='0' MARGINHEIGHT='0' onBlur=self.focus()><TABLE BORDER='1' 
CELLPADDING='2' WIDTH='100%'>"; // HEIGHT='100%'
	pagina+="<TR><TD ALIGN='center' VALIGN='top' ROWSPAN='2'> <BR><IMG 
BORDER='0' SRC='"+Icona+"' WIDTH='32' HEIGHT='32'></TD><TD ROWSPAN='2' 
ALIGN='left' VALIGN='middle'><FONT FACE='"+BodyFontFace+"' 
SIZE='"+BodyFontSize+"'>"+BodyFontStyles+testo+BSend+"</TD><TD 
ALIGN='right' VALIGN='middle'><FORM NAME='metodo' 
onSubmit='document.metodo.ok.click();return false'><INPUT TYPE='button' 
NAME='ok' VALUE='   Ok   ' 
onClick='opener."+funzione+"(document.metodo.inp.value);self.close()'></T
D></TR>";
	pagina+="<TR><TD ALIGN='right' VALIGN='middle'><INPUT TYPE='reset' 
VALUE='Annulla' 
onClick='opener."+funzione+"(\"\");self.close()'></TD></TR>";
	pagina+="<TR><TD COLSPAN='3' ALIGN='right' VALIGN='middle'><INPUT 
TYPE='text' SIZE='40' NAME='inp' VALUE='Riccardo' STYLE='font-family: 
monospace; font-size: 12px'></FORM></TD></TR>";
	pagina+="</TABLE></BODY></HTML>";
	setTimeout("codice()",100);
	}
function codice()
	{
	with (MyPrompt.document)
		{
		open();
		writeln(pagina);
		close();
		}
	pagina="";
	}	
//-->
-------------- fine HTML -------
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

 anche a Catarsi, Darius e Balestra).
Che ne dici di fare magari un link ad un file zippato su qualche server?
Tra rimettere insieme le righe spezzettate e togliere i vari "file://" ci si
mette una vita......
--
Bye.
--
Šarius.-            :.internet X3meS.:
www.darius.it
   :.mailto.: info(@T)darius(DOT)it
------------------------------------------------ >

Praticamente il fatto che ottenga il "focus" la casella di testo fa sì che
la perda il "document" e quindi sbalza fuori. Strano, ma evidentemente è
giusto così.
Metodo 1 =============
    Non metto mano al tuo codice, però suggerisco che all'evento onblur del
body non fai fare subito il comando "self.focus()" ma chiami una funzioncina
che determina se il focus è passato all'input, e se non lo è, allora
richiama il focus.
    Come fare? La maniera "manuale" è di impostare un "semaforo" sull'evento
"onfocus" della casella di testo, semaforo che viene poi letto nella
anzidetta funzione che chiami quando il "document" perde il focus.
Metodo 2 =============
    Altra alternativa è far si che sia la casella di testo stessa a gestire
il focus al posto della finestra.
Metodo 3 =============
    Non voglio farti sprecare ore di lavoro, ma giusto per darti qualche
"input", io ho rifatto le finestrine di dialogo di base (alert, confirm e
prompt) oltre che crearne altre tipiche di vb (si/no, critical ecc.) usando
i layer.
Okay, non è utilizzabile sui vecchi browser, ma per dio, se uno non si
aggiorna, che si tenga le dialog di base! :-)
--
___________________________________________________________
a p bertolini
Avviso importante: nessun albero è stato tagliato per l'invio di questo
messaggio, tuttavia non si esclude la possibilità che diversi elettroni
siano stati scomodati
#ICQ: 10681264
(
www.webwarrior.org
)
"Riccardo" <ri.ri...@agora.stm.itALY> ha scritto nel messaggio
news:MPG.16b89f351...@powernews.libero.it...
[omissis]

 aggiorna, che si tenga le dialog di base! :-)
Giusto, ma almeno Netscafé vogliamo accontentarlo? ^_^


anche a Catarsi, Darius e Balestra).
lo script che ti avevo mandato non ti funziona con IE?
a me funzionava con ie5 e adesso con IE5.5
sostanzialmente rilevavo il keypress e attribuivo il focus al campo;
lo riperdeva ma non abbastanza da non permettere la scrittura
sorgevano problemi per la cancellazione di un carattere digitato ma lo
gestivo sempre mediante la gestione di eventi
questo per Ie
Ciao

 Ciao
Si, ma è un accrocchio un po' troppo spinto :-)
Se devo arrivare alla gestione degli eventi per far funzionare uno 
scriptino come quello... preferisco lasciar perdere come in effetti ho 
fatto fino adesso, a meno che a qualcun altro non venga un'idea "miglioe" 
(pls: nota le virgolette) :-)


(pls: nota le virgolette) :-)
e vabbeh, mai contento ;-)
ciau,
Paolo

 (pls: nota le virgolette) :-)
Purtroppo l'unica via percorribile è quella di gestire eventi e fare un
mucchio di... chiamiamole porcherie? :)
Da quando poi è uscito win98 ed i suoi successori, con quell'odioso sistema
di lampeggio dei pulsanti della taskbar, ha reso ancora più inefficienti le
funzioni focus() e blur() legate ai rispettivi eventi... :(
A presto...
--
Bye.
--
Ðarius.-            :.internet X3meS.:
www.darius.it
   :.mailto.: info(@T)darius(DOT)it
------------------------------------------------ >

 funzioni focus() e blur() legate ai rispettivi eventi... :(
Già... rimpiango il buon vecchio Groviera 95.


mucchio di... chiamiamole porcherie? :)
ehm, preferivo 'accrocchio' ;-)
rendeva l'idea ma era politically correct :D
Ciao ,
firmato: smanetun sensibile
 

 vado; di come possa reagire IE <=5 non ne ho proprio idea.
Mi sarebbe bastato anche il solo IE5, ma niente :-((


Niente da fare, il BODY continua a comandare :-(
Provare a gestire sulla base del focus?
<BODY onblur=setTimeout('self.focus()',20)
onfocus=document.getElementById('bubu').focus()>
IE5.5 
effetto 'parkinsoniano' come dice Catarsi visibile dal cursore
ma scrivo e cancello i caratteri digitati senza bisogno di rilevare
eventi

eventi
nada assolutamente inaffidabile 
e' vero che consente di scrivere
e' vero che resiste al 100% alla minimizzazione
ma ritorna in primo piano solo in misura casuale e saltuaria
pardon

, 
p.ca...@toglimitiscalinet.it
 says...

Avevo già provato :-))
