Visualizzazione post con etichetta internet explorer. Mostra tutti i post
Visualizzazione post con etichetta internet explorer. Mostra tutti i post

lunedì 24 agosto 2015

Javascript usare Active-X per recuperare utente connesso

Questo script javascript (funziona soltanto su IE, non è il massimo a livello di sicurezza etc.) può essere utilizzato per recuperare lo username dell'utenza Windows connessa.

function getUserName() {
  try
  {
   var wshNetwork = new ActiveXObject("WScript.Network");
   var userName = wshNetwork.userName; 
   document.getElementById("myVal").value=userName;
   return userName;
  }
  catch(err){
   alert(err.message);
  }
 }



martedì 18 febbraio 2014

Impossibile effettuare il download di file con IE7 IE8. Impossibile aprire il sito internet. Sito non disponibile o non trovato.

Sono incappato in questo errore quando in una web application tentavo di scaricare un documento.
L'errore si verificava solo in alcune macchine di un dominio aziendale e solo con i browser IE7 ed IE8.
Con tutti gli altri browser,  Firefox, Chrome, etc.e anche con IE9 e IE10 invece funzionava correttamente.
L'errore effettivamente non è molto parlante e abbiamo perso parecchio tempo prima di capire il reale motivo.
Dal sito della microsoft e da alcuni blog si evince che in presenza di alcuni header nella cache come :

response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control","no-cache,no-store,max-age=0");
response.setDateHeader("Expires", 1);

viene segnalato questo errore.
Il motivo francamente non si capisce bene, e sembrerebbe una sorta di bug visto che anche dal sito della microsoft consigliano di reimpostare il browser oppure di settare un parametro sul regedit di sistema (vedi qui e anche qui ).
Per risolvere noi abbiamo inserito i seguenti header:

response.setHeader("Cache-Control", "cache, must-revalidate");
response.setHeader("Pragma", "public");

mercoledì 13 marzo 2013

showModalDialog problemi con IE 8

Ho verificato il seguente tipo di problema utilizzando lo showModalDialog soltanto con IE8, mentre tutto funzionava correttamente con Firefox e Chrome.
Il requisito era di aprire in modale una finestra e consentire al suo interno la navigazione mantenendo inibita la possibilità di cliccare sulla finestra padre.
Il problema che si verificava era che al primo click all'interno della finestra modale, invece di proseguire la navigazione normalmente, veniva aperta una nuova finestra , su cui poi si navigava correttamente.
C'era quindi la seguente situazione:
  1. Finestra di partenza, da cui si apre con showModalDialog l'applicazione che si vuole visualizzare in modale;
  2. Finestra dell'applicazione iniziale, sulla quale  clicco per navigare;
  3. Finestra aperta dall'interno della finestra modale.
Insomma  una situazione molto strana ed anomala nonchè, ripeto, esistente soltanto su Internet Explorer.
Navigando su internet ho trovato questo interessante articolo in merito che mi ha aiutato a risolvere il problema: http://jwcooney.com/2011/12/22/showmodaldialog-opens-a-new-window-on-submit-or-location-href/  .

Sintetizzando ci sono due strade da seguire:

  1. Nella pagina che si apre in modale inserire all'interno del tag head il seguente tag: <base target="_self" /> ;
  2. Effettuare il submit del form aperto in maniera modale via javascript utilizzando un tag anchor hidden nel form (<a href=”" id=”goLocation” style=”display:none;”> ).
Con il primo modo non mi ha funzionato, con il secondo invece si.
Quindi via javascript bisogna chiamare un metodo che imposti la proprietà href con l'action desiderata e quindi effettui il click.
Una cosa del tipo:

document.getElementById('goLocation').href = 'myAction.do?par1=x&par2=y';
document.getElementById('goLocation').click();

Si noti come  è necessario passare i parametri desiderati in querystring, per cui nel caso di form con molti campi ci sarà un lavoro pesante di javascript per settare i parametri corretti.

La mia paura a questo punto è stata quella di dover sostituire alla modalità standard di post del form sempre questa via tag anchor e javascript ma non è stato necessario, è bastato fare questa modifica solo nella pagina su cui si apre la finestra in modale, per il resto è rimasto tutto tale e quale.