2009-04-24 8 views
0

Nous avions découvert un comportement étrange des popups dans IE8. Dans IE7 et IE6 notre pop-up ressemble à ceci:
alt text http://img145.imageshack.us/img145/2318/normall.gif
Mais dans IE8 il a étrange frontière qui « clignote » pour 5-6 fois et ressemble à ceci:
alt text http://img16.imageshack.us/img16/4677/bugo.gif
code qui est utilisé pour montrer ce pop-up:popup clignote dans ie8

Browser.prototype.showPopup = function(someHtml) { 

    ... 

    var popup = doc.parentWindow.createPopup(); 

    for(var n = 0; n < doc.styleSheets.length; n++) { 
    popup.document.createStyleSheet(document.styleSheets[n].href); 
    } 

    popup.document.body.innerHTML = "<div style=\"width:100%;height:100%;overflow:auto\">" + someHtml + "</div>"; 

    popup.document.parentWindow.Form = Form; 
    popup.document.attachEvent("onselectstart", IEOnSelectStart); 
    popup.document.attachEvent("oncontextmenu", IEOnContextMenu); 

    ... 

    popup.show(x, y, width, height, ctl); 
    doc.popup = popup; 
} 

Ce que je fait des recherches:
1. J'avais essayé de souscrire à l'événement OnPropertyChanged. Mais il ne se déclenche pas lorsque la bordure change, alors que cela fonctionne correctement si j'essaie de modifier ces propriétés à partir du code.
2. J'avais écrit simple observateur qui chaque 100ms interroge popup et les propriétés de dumps. C'est ainsi que j'ai découvert que quelqu'un définit body.style.borderStyle sur "inset" et après quelques secondes sur startet (pas un styleName).
3. Nous avons passé en revue tous les codes JavaScript et nous n'avons trouvé aucune référence sur les valeurs de début ou de fin. Je suis sûr à 99% que ce n'est pas notre code qui change les frontières. Peut-être que c'est une sorte de politique de sécurité IE comme une réaction à notre action.
Des idées - qu'est-ce qui pourrait causer de tels changements dans les bordures de popup dans IE8?

P.S. De plus, je ne peux pas reproduire ce problème en dehors de notre environnement.
P.P.S. Site dans la zone de confiance
P.P.P.S. Le mode IE est les caprices P.P.P.P.S. Certains popups sur la même page fonctionnent bien, mais je ne peux pas trouver la différence entre eux qui pourrait conduire à un tel comportement.

Répondre

0

j'avais problème reproduit avec ce code:

<script type="text/javascript" > 
    document.showInnerPopup = function(){ 
     alert("Inner popup"); 
    } 

    function btnOnClick(){ 
     var popup = document.parentWindow.createPopup(); 
     popup.document.body.innerHTML = "<div style=\"border: 1px solid red;width: 100%; height:100%\" id=\"popupDiv\" onclick=\"javascript:document.showInnerPopup(this,event)\">Click to show another popup</div>"; 
     popup.document.showInnerPopup = function(obj, evt) { 
      var doc = evt.srcElement.ownerDocument; 

      var popup = doc.parentWindow.createPopup(); 
      popup.document.body.innerHTML = "<div style=\"border: 1px solid green;width: 100%; height:100%\">Nested popup</div>" 
      popup.show(10, -20, 150, 150, doc.body); 
     } 

     popup.show(10, -20, 100, 100, document.getElementById("btn")); 
     document.btn = document.getElementById("btn"); 
     document.popup = popup; 
    } 
</script> 
<input type="button" value="Show Popup" onclick="btnOnClick()" id="btn" /> 

Ce comportement est dû à IE paramètre « Autoriser les fenêtres initiées par des scripts sans contrainte de taille ou de position », qui par défaut a une valeur « Désactiver » même confiance zone

0

peut-être que l'équipe de développement IE ont décidé de devenir bon et rendre la vie difficile à ceux qui veulent utiliser popups :)

+0

L'équipe de développement d'IE a décidé de rendre la vie dure à ceux qui veulent construire des interfaces riches. FYI: les popups sont utilisés non seulement pour l'injection et les attaques :-) –

+0

Haha ouais - toutes ces interfaces utilisateur qui nécessitent des popups pour fonctionner. Mieux vaut informer les équipes de développeurs de Google Maps/Gmail afin qu'elles puissent horriblement casser l'UX dans la poursuite de cette nouvelle définition de "riche": p –

0

Je reçois une sorte de clignotement chaque fois que je l'utilise Google dans IE8 et placez la souris sur la champ de saisie de recherche whi ch m'empêche de taper jusqu'à ce que j'éloigne la souris. Mais ma cause était la fonction X-Mouse de l'activation de Tweakui. Pourtant, avec cette fonctionnalité désactivée et planant au-dessus de la recherche, il y a toujours une «Recherche Google» qui clignote de temps en temps.

C'est pourquoi j'évite IE. C'est toujours aussi bogué. Je m'en fiche si tweakui n'est pas supporté par MS. Pourquoi MS ne réécrit-il pas complètement IE?