Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    window.open multiplo su IE 6

    Ho un problema con il seguente codice che su tutti i browser funziona da favola, su IE 6 no.

    codice:
    function doAll() {
      var items = $("#someid").get().reverse();
      for (var i = 0; i < items.length; i++) {
        doOne(items[i], i);
      }
    }
    
    function doOne(e, i) {
      var d = 40; // distance
      var w = e.id
      return UTIL.popup.open(e.href, { top: (i + 1) * d, left: (i + 1) * d, windowName: w, toolbar: 'yes', menubar: 'yes' });
    }
    In pratica, una volta invocata doAll dovrebbe aprire tante popup quanti sono gli elementi dom contenuti nella variabile items. A ciascuno viene assegnato un valore differente di windowName per evitare che la stessa popup si ricarichi più volte.

    Il problema è che mentre su tutti i browser funziona correttamente, su IE 6 viene sempre e solo aperta la popup corrispondente al primo elemento. Il ciclo non genera errore, inserendo un alert in doOne vedo che arriva correttamente a ci clare tutti gli elementi.

    Idea del perché?

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    all'inizio pensavo si aprisse solo l'ultimo, poi ho visto che hai usato un reverse() sull'array e quindi apre solo il primo

    Potrebbe essere un problema di closure?

    che succede se modifichi così
    codice:
    for (var i = 0; i < items.length; i++) {
        (function(item, ii) {
           doOne(item, ii);
        })(items[i], i);
    }
    ?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Giusto per tenervi aggiornati, purtroppo la soluzione di fabrizio non ha dato esito.
    Anche riducendo all'osso il problema, sembra che un codice tipo

    codice:
    for (var i = 0; i < 5; i++) {
    window.open('#', i);
    }
    con IE 6 non funzioni a dovere.

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    a me quel codice funziona senza problemi in ie almeno in locale (filesystem) su IE6
    solo per scrupolo mi sono solo assicurato di dare ai vari popup un nome che non inizia con un numero (e privo di spazi)

    codice:
        for (var i = 0; i < 5; i++) {
            id = ["idfinestra", i].join('');
            window.open('pagina.html', id);
        }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.