IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

ie et object


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut ie et object
    Salut à tous

    INTRODUCTION

    Jusqu'ici j'utilise la balise IFRAME pour afficher du contenu HTML dans une page. De plus j'applique une fonction javascript à la fin du chargement de la balise pour redimensionner le contenu affiché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <IFRAME ONLOAD="redim();" ...>...</IFRAME>
    Pour des raisons de normalisation, je souhaite remplacer cette balise par la balise OBJECT mais cette balise ne gère pas l'évènement ONLOAD. Pour palier à ce problème j'utilise une image vide chargée à la fin du document HTML. Cette image contiendra un déclencheur ONLOAD pointant sur la fonction de redimensionnement.


    PRESENTATION

    Dans mon document principal:
    - j'ai une fonction javascript de redimensionnement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function redim(){
       ...
    }
    - j'affiche un document HTML contenu dans une balise OBJECT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <OBJECT ID="HTML_OBJECT"...>...</OBJECT>
    Dans le document HTML:
    - j'intègre une image, servant de déclencheur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <IMG ONLOAD="parent.redim()" ... />

    LE PROBLEME
    L'appel de fonction "parent.redim();" ne marche pas avec IE.
    J'ai essayé différentes méthodes pour accéder aux éléments de la page parente mais rien n'y fait!

    Je cherche donc des pistes de réflexions svp.

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    onlaod sur une balise image ??? pas très étonnat que ce la ne fonctionne pas, passe par le onload du body ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut re
    Citation Envoyé par SpaceFrog
    onlaod sur une balise image ??? pas très étonnat que ce la ne fonctionne pas, passe par le onload du body ...
    Effectivement je ne sais pas pourquoi j'ai mis ONLOAD sur une img ?
    Ceci dit l'appel fonctionnait sous FF et même en mettant ONLOAD sur BODY le problème reste le même : IE ne trouve pas la fonction appelée dans la page principale.

    J'ai finalement réussi a résoudre mon problème en mettant ONLOAD sur la page principale ce qui me permet d'appeler la fonction pour redimensionner la balise OBJECT. Je continue néanmoins à intégrer du javascript à la volée dans le HTML afin de supprimer le cadre et les ascenceurs générés par la balise OBJECT (toujours à cause d'IE).

    Thanks

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Mais pourquoi OBJECT ?
    IFRAME c'est beacoup mieux pour l'utilisation que tu fait
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut re
    Citation Envoyé par FremyCompany
    Mais pourquoi OBJECT ?
    IFRAME c'est beacoup mieux pour l'utilisation que tu fait
    En fait jusqu'ici j'utilisais la balise IFRAME mais elle n'est pas compatible avec XHTML strict contrairement à la balise OBJECT...

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Ah bon ?
    Oublie le mode strict alors

    Sinon, fait semblant d'être gentil :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <span id="iframeCode" style="display: none"><!-- <iframe ...></iframe> --></span>
    <script type="text/javascript">document.write(document.getElementById("iframeCode").firstChild.data)</script>

    Le validateur n'y vera que du feu et de toute facon le navigateur se fiche royalement que ton HTML passe ou non la validation XHTML Strict
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  7. #7
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    ça marche aussi bien avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('...').innerHTML = '<iframe ...></iframe>';
    qui est plus XML que le document.write...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Le validateur n'y vera que du feu
    Certe ca passe les validateurs mais c'est pas le but.

    Le but est de standardiser l'affichage de la page dans les différents navigateurs en s'appuyant sur les recommandations 3wc d'ou l'usage de la balise object.
    Le validateur à pour fonction de t'assurer du bon format de ta page. Si le but n'est que de bluffer le validateur, autant ne pas passer par un validateur !

    de toute facon le navigateur se fiche royalement que ton HTML passe ou non la validation XHTML Strict
    Qu'entends tu pars là ?
    D'expérience, le doctype influe énormément sur l'affichage d'une page d'un navigateur à l'autre.

  9. #9
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Le doctype oui, mais que tu le respecte ou pas n'a aucune importance
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  10. #10
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    La différence pour les navigateurs entre le doctype XHTML 1 STRICT et le XHTML 1 Frameset est relativement minime, la différence principale est la gestion ou non des attributs relatifs aux frames et iframes (target, etc...) et du point de vue affichage n'influencent pas vraiment. EN revanche le fait de spécifier un doctype adapté à ton contenu est important pour que les navigateurs interprètent correctement ce que tu leurs donne.

  11. #11
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Et puis comme tu peux le constater, la balise OBJECT crée un ActiveX.

    Si le contenu est du HTML, elle crée un ActiveX IE (enfin, c'est plutot un composant COM mais simplifions, c'est plus ou moins pareil)

    Seulement le composant ActiveX créé n'a pas de lien de parenté avec l'instance précédente de IE, d'où parent qui ne marche pas.

    Normalement il devrait en être ainsi pour tous les navigateurs mais comme seul IE peut faire cela (les autres navigateurs ne disposent pas d'un composant COM (ou même indépendant), donc ils rendent l'objet OBJECT comme si il s'agissait d'une IFRAME, ce qui est normalement faux en théorie.

    D'ailleurs pour les autres types d'objets comme les objets flash, PDF, ...) l'utilisation de COM est de mise (sous Windows du moins) pour tous les navigateurs

    Comme ca tu vois que IFRAME et OBJECT, ce n'est pas la même chose et ca ne s'utilise pas l'un pour l'autre

    Garde OBJECT pour les Flash et IFRAME pour les frames, tu auras la vie plus belle et tu épargnera au navigateur de se réinstancier pour rien
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  12. #12
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    en fait, ce que t'essayes de faire, au final, c'est un peu de l'AJAX (qui te permet de faire du XHTML strict si tu préfères ...)

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous

    Le doctype oui, mais que tu le respecte ou pas n'a aucune importance
    je n'ai pas saisie

    Comme ca tu vois que IFRAME et OBJECT, ce n'est pas la même chose et ca ne s'utilise pas l'un pour l'autre
    Merci pour ces précisions je n'avais pas vu ca sous cet angle.

    Garde OBJECT pour les Flash et IFRAME pour les frames, tu auras la vie plus belle et tu épargnera au navigateur de se réinstancier pour rien
    Sachant que iframe n'est pas reconnue en xhtml strict :
    - quel sera le comportement d'un navigateur lorsqu'il rencontrera cette balise dans une page ??
    - est ce que ce comportement sera invariable quelquesoit le navigateur ??

  14. #14
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Tous les navigateurs afficheront ton IFRAME, ca je peux te l'assurer

    Tu sais, ils ne vérifient pas que ton HTML est bien valide du point de vue du Doctype que tu donnes, ca prendrais trop de temps pour rien (l'utilisateur se fiche de le savoir et le navigateur peut faire son rendu sans).

    Par contre, le validateur, lui, ne sera pas content, d'où la solution du script

    Avec ce "workaround", comme on dit, tout le monde est content :
    - Le développeur car son site marche bien
    - Le validateur car il ne voit pas la balise
    - Le navigateur car il a son DocType

    Mais attentions tout de même à vérifier sur différents navigateurs (si tu es sur Windows, c'est l'idéal puisque tu as à ta disposition IE, FF, Opéra et Safari 3.02 BETA), parce que le style CSS ou certaines propriétés JavaScript pourraient peut-être ne pas être interprétée correctement (je ne crois pas que cela soit le cas, mais je ne peux pas le jurer)
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Tous les navigateurs afficheront ton IFRAME, ca je peux te l'assurer
    Effectivement je peux le confirmer, le site dans lequel je souhaite changer la balise IFRAME par OBJECT est actif depuis pas mal de temps et j'ai pu éprouver cette balise sur ie6+7,ff,netscape, safari(macos), camino(macos),linux
    Je n'ai aucune différence de traitement visible entre les différents navigateurs.

    Tu sais, ils ne vérifient pas que ton HTML est bien valide du point de vue du Doctype que tu donnes, ca prendrais trop de temps pour rien (l'utilisateur se fiche de le savoir et le navigateur peut faire son rendu sans).
    Pour moi le doctype représente l'algorithme de traitement de la page par un navigateur. Il permet donc de standardiser le traitement. Si le doctype n'est pas présent, le navigateur utilisera son traitement perso.

    Aujourd'hui on ne peux pas prévoir le comportement des futures versions des navigateurs concernant les éléments hors doctype. Ce mode diffèrait déjà entre ie6 et ff et c'est toujours le cas entre ie7 et ff pour ne citer que les principaux.
    D'où l'intérêt, à mon sens, de suivre un modèle standard et d'éviter de recourir à des contournements mêmes s'ils sont justifiés !

    Pour info, j'ai remplacer la balise IFRAME par la balise OBJECT et je conserve le même confort de traitement. L'instance résultante reste transparente donc je pense tout de même l'intégré.

    merci à tous et en particulier à FremyCompany pour ces éléments de réflexions.

    Bob

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Notion de boucles dans Business Object
    Par lionelEIGIP dans le forum Deski
    Réponses: 1
    Dernier message: 08/04/2004, 11h26
  2. Réponses: 2
    Dernier message: 30/01/2004, 14h07
  3. [DDL] "object <table> is in use"
    Par TMuet dans le forum SQL
    Réponses: 4
    Dernier message: 26/01/2004, 10h18
  4. Réponses: 8
    Dernier message: 21/11/2003, 18h38
  5. Comment inserer des donnee de type Large Object !!
    Par josoft dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2003, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo