28172 sujets

CSS et mise en forme, CSS3

Bonjour à tous !

Tout d'abords désolée si la solution à mon problème a déjà été donnée mais je ne la trouve pas.

J'utilise la balise object pour simuler une iframe. Problème: sous IE il y a systématiquement une bordure autour que je ne souhaite pas. Je lis partout qu'il faut spécifier html{ border:none; } sur la page fille mais cela ne fonctionne tout simplement pas du tout. Plus fort encore, j'ai fait un test en appliquant une bordure sur la balise object dans la page mère et une sur la balise html de la page fille => la bordure indésirable s'affiche entre les deux !

Soit quelque chose m'échappe soit je ne peux rien y faire. En dessous un code simplifié de ce que je tente de faire.

Page mère
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
  <object data="test_iframe.html" type="text/html" width="200" height="200" border="0"></object>
</body>
</html>


Page fille
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="test.css" media="screen" />
</head>

<body>
  sdfsdfsdfsfd
</body>
</html>


CSS
html,body{
	margin: 0;
	padding: 0;
	border:0;
	border:none;
	outline:none;
}


Pitié aidez-moi ! Smiley smile Merci

Edit : des heures de recherche plus tard je n'ai toujours pas de solution et je crains sévèrement qu'il n'y en ait pas, je suis maintenant convaincue que cette pseudo bordure s'applique sur <object> de la page mère et non sur la page fille. A défaut d'une solution, si une bonne âme pouvait m'en donner la raison, ce serait bien aimable.
Modifié par keyraw (26 Aug 2010 - 17:42)
Alors, la bonne nouvelle, c'est que sur IE6, il n'y a pas de bordure ^^;

Je regarderais ce soir sur IE7/8 si personne ne t'as donné de solution d'ici là ^^;
Modifié par Laurie-Anne (30 Aug 2010 - 11:32)
Ah oui très juste, je n'avais même pas pensé à vérifier. Effectivement c'est une bonne nouvelle. Le problème reste entier sur IE7/8.

De ce que j'ai vu pas mal de gens se sont cassés les dents là dessus. La seule solution trouvée sur un forum c'était de détecter le navigateur et d'utiliser iframe plutôt qu'object dans le cas IE ce qu'évidemment je ne souhaite pas ...

Merci en tout cas de te pencher sur mon problème, si tu trouve une solution, ça te vaudra mon respect éternel ! Smiley smile
Alors, j'ai testé sous IE8, normalement le problème est sencé être corrigé avec border:none; sur l'enfant, mais c'est sans effet.

Du coup, je n'ai pas de solution à te proposer.

Pour éviter les frames, il est également possible d'utiliser des includes PHP (mais ça dépends de ton design).
Laurie-Anne, je ne peux pas utiliser include vu que la page inclue sera sur un autre hébergement et domaine ce que la fonction interdit.

Et sinon Heyoan j'ai déjà vu ce post (je ne soumets mon problème sur un forum qu'après avoir bien cherché, du coup c'est rare que je poste en fait). Mon problème ne sont pas les scroll bar mais bien ces bordures. J'ai absolument tout essayé.

D'ailleurs vous pouvez faire un test "marrant' => fixer une bordure sur l'object de la page mère et une sur le body de la page enfant, vous verrez la bordure indésirable apparaitre entre les deux ce qui, pour moi, suffit à me faire dire que c'est bien IE qui la rajoute indépendamment de tout css. Vous pouvez aussi zoomer sur la page pour constater que cette bordure ne s'agrandit pas.
Modifié par keyraw (31 Aug 2010 - 09:06)
keyraw a écrit :
Mon problème ne sont pas les scroll bar mais bien ces bordures. J'ai absolument tout essayé.
Ah désolé : j'avais lu un peu vite ton sujet. Smiley langue

keyraw a écrit :
Laurie-Anne, je ne peux pas utiliser include vu que la page inclue sera sur un autre hébergement et domaine ce que la fonction interdit.
Plus précisément cela dépend de la configuration.

A essayer :
<div id="test">
<?php
echo file_get_contents('http://www.example.com/test_iframe.html');
?>
</div>
La fonction file_get_contents fonctionnera ou non en fonction elle aussi du paramétrage mais a plus de chances d'aboutir que l'include.
J'ai oublié de préciser que je suis en environnement Microsoft donc => ASP (j'ai pas eu le choix ^^). Je ne sais pas s'il y a un équivalent. En plus la partie incluse sera très fonctionnelle avec formulaire et compagnie, je ne sais pas si ça pourrait marcher ...

Mais j'avais pas pensé à ça, ça pourrait être une bonne solution en PHP pour l'avenir mais pour du statique je pense.
Bon comme ce problème n'a pas l'air d'avoir de solution CSS, et bien que j'ai eu de bonnes suggestions je ne peux les appliquer, j'ai donc opté pour une parade qui ne me plait guère c'est-à-dire détecter le navigateur et utiliser iframe plutôt qu'object s'il s'agit d'IE.

Je voudrais maintenant changer le topic mais [Résolu] n'est pas adapté, je mets quoi ? [A résoudre un jour], [1/2 Résolu], ... ? Smiley smile
Et tu peux me rappeler pourquoi tu veux rester en xhtml Strict ? Est-ce que tu aurais le sentiment que c'est plus mieux que le Transitional ? Smiley ravi

Edit: si c'est le cas je t'invite à relire cet article sur le choix du doctype.
Modifié par Heyoan (01 Sep 2010 - 09:23)
Y'a un peu de ça. J'ai pris l'habitude d'intégrer en strict parce qu'il me semble que ça donne moins de travail pour les compatibilités de navigateur et de système. Je trouve que ça vaut la peine de se casser la tête pour respecter ce format, c'est instructif. Tu peux voir ça comme un objectif personnel.

Puis sans parler de xhtml strict, iframe est une balise propriétaire si je ne m'abuse, rien que pour ça, j'ai pas envie de m'en servir. Smiley langue
keyraw a écrit :
J'ai pris l'habitude d'intégrer en strict parce qu'il me semble que ça donne moins de travail pour les compatibilités de navigateur et de système. Je trouve que ça vaut la peine de se casser la tête pour respecter ce format, c'est instructif. Tu peux voir ça comme un objectif personnel.
Je suis d'accord avec toi et c'est également mon préféré mais si j'ai besoin d'un élément IFRAME ou d'un attribut target je passe au Transitional (en toute connaissance de cause).

keyraw a écrit :
iframe est une balise propriétaire si je ne m'abuse
Tu t'abuses : cet élément fait partie des specs. Smiley cligne


Edit: et franchement entre passer au Transitional et faire une vilaine détection du browser il n'y a pas photo.
Modifié par Heyoan (01 Sep 2010 - 09:31)
Hmmm ça c'est intéressant, pourquoi je lis partout que c'est une balise propriétaire ? Et puis comme on l'a vu object fait très bien ce travail si ce n'est ces bordures dans IE, quel intéret de garder les deux ?