Projet

Général

Profil

Anomalie #3412

accès à une iframe en javascript : limitation de firefox

Ajouté par Lionel Morin il y a presque 12 ans. Mis à jour il y a plus de 11 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
07/03/2012
Echéance:
% réalisé:

100%

Distribution:
EOLE 2.3

Description

Exemple sur le plugin de charte (voir ticket lié) :

Lors de l'accès à l'onglet "Charte informatique" dans l'interface d'administration, une iframe est utilisée et la méthode "adjustFrameHeight" du fichier "ajax.js" est appelée par la fenêtre principale pour redimensionner l'iframe à la hauteur de son contenu.
On obtient alors ce message sous Firefox : "Permission refusée à <https://etab.in.academie.fr> d'obtenir la propriété Window.document de <http://etab.in.academie.fr&gt;."
Il est dû à cette ligne javascript : "var height = v_frm.contentWindow.document.body.scrollHeight + 30;"
Il semble que ce soit une restriction forte du navigateur qui empêche la fenêtre principale de manipuler le "document" du contenu de l'iframe juste à cause de la différence de protocole.

Je propose d'ajouter une méthode "getProtocol" à l'objet "$p.url" (contenant déjà "getHost") afin d'être utilisée par "adjustFrameHeight" pour ne pas tenter de redimensionner la hauteur de l'iframe si le protocole est différent entre le parent et l'enfant sous firefox :

getProtocol: function(v_url)
{
    var matches = v_url.match(/^https?/i);
    return matches ? matches[0] : "";
}

Le "else" de la méthode "adjustFrameHeight" deviendrait alors : (j'en ai profité pour sortir la condition existante sur firefox puisqu'elle se faisait dans les 2 cas)

            if ($p.navigator.FF) v_frm.style.height = '100px'; // used on FF to force resize

            // if the iframe is a not a local url, the size properties are not accessable
            // exception firefox (mars 2012) : si le protocole est différent, ça bloque ("Permission refusée à <https://...> d'obtenir la propriété Window.document de <http://...>.")
            if ($p.url.isLocal(v_frm.src) && (v_frm.src).indexOf('framenoresize') == -1 && (!$p.navigator.FF || ($p.url.getProtocol(window.location.href)!=$p.url.getProtocol(v_frm.src)))) {
                var height = v_frm.contentWindow.document.body.scrollHeight + 30;

                // if content height too small, enlarge
                if (height < (pageHeightMinusHeader - 30)) height = pageHeightMinusHeader - 30;

                if (v_doitagain)
                    setTimeout("$p.adjustFrameHeight($('" + v_frm.id + "'),false)",6000);
            }
            else {
                var height = pageHeightMinusHeader - 15;
                // l_frm.scrolling = 'auto' > do not work. With IE this property is not changeable after item creation
            }

Demandes liées

Lié à Sources posh EOLE 2.2 - Anomalie #3025: accès à une iframe en javascript : limitation de firefox Fermé 07/03/2012

Révisions associées

Révision e510b244 (diff)
Ajouté par remi il y a environ 12 ans

pass 'searchtype' to addWhere hook, see #3412

Révision 228a1980 (diff)
Ajouté par Lionel Morin il y a presque 12 ans

Accès à une iframe en javascript : limitation de Firefox (fixes #3412)

Révision 228a1980 (diff)
Ajouté par Lionel Morin il y a presque 12 ans

Accès à une iframe en javascript : limitation de Firefox (fixes #3412)

Historique

#1 Mis à jour par Lionel Morin il y a presque 12 ans

  • Projet changé de Sources posh EOLE 2.2 à eole-posh

#2 Mis à jour par Lionel Morin il y a presque 12 ans

  • Statut changé de Nouveau à Résolu
  • % réalisé changé de 0 à 100

#3 Mis à jour par Gérald Schwartzmann il y a plus de 11 ans

  • Statut changé de Résolu à Fermé

Formats disponibles : Atom PDF