Archive for giugno, 2009
30
giu

I se sono relativi alla tipologia di interazione che volete avere con la finestra modale. Chiunque abbia mai avuto a che fare con i popup sa benissimo che essi possono portare qualche problema, tutto sommato risolvibile. Una cosa che risulta impossibile da fare, se non con qualche particolare accorgimento, è metterli in “primo piano” in modo da impedire all’utente di cliccare sulla pagina sottostante senza aver prima chiuso il browser. Lo stesso comportamento, insomma, di una finestra modale di Windows.

Quella delle finestre modali è una possibilità è utilizzabile, usando i browser di ultima generazione quali Firefox 3, Explorer 7 o 8, Safari 4 ma ci sono alcune controindicazioni. A tutti gli effetti con i browser “non Microsoft” tutto funzionerebbe in maniera regolare, come se si avesse a che fare con un normale popup ma messo in primo piano. Con IE, invece, se il popup contiene una form, una volta schiacciato il tasto “Invia” si aprirà una nuova finestra. Oppure se avete nel popup avete una funzione che richiama la pagina che lo ha aperto (parent) ad esempio per fare un refresh questa non funzionerà. Non so se ci sono altri problemi ma per me questi sono stati sufficienti a farmi abbandonare l’idea.

Se invece non avete problemi di gestione simili potreste utilizzare un codice simile al seguente. Nella parte <head> pagina dove dovete chiamare il popup:

function openModalWindows() {
if (window.showModalDialog) {
window.showModalDialog("popup.html","nome","dialogWidth:200px;dialogHeight:300px");
} else {
window.open("popup.html","nome","width=200,height=300,toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,modal=yes');
}
}

Il link presente nella sezione <body> dal quale volete chiamare la funzione per aprire il popup dovrebbe essere del tipo:

<a href="popup.html" target="nome" onclick="openModalWindows(); return false;">Apri popup modale</a>

, , ,

12
giu

Chiunque abbia mai provato ad utilizzare nella stessa pagina le due librerie javascript jQuery e Prototype sa bene che esse non riescono a coesistere se non con qualche piccola modifica. Il problema sta nel fatto che entrambe utilizzano la funzione di default “$”. Ecco allora come fare:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
JQ = jQuery.noConflict();
</script>
<script src="prototype.js" type="text/javascript"></script>

Come vedete sarà sufficiente includere le due librerie nell’ordine suddetto e chiamare la funzione jQuery.noConflict() assegnandola alla variabile JQ. Le altre modifiche da effettuare all’interno della pagina che utilizza le funzioni di jQuery sono nella sostituzione della chiamata “$” con la chiamata “JQ”.

, , ,