Bonjour,
J'ai un problème qui me semble assez mystérieux à vous soumettre.
J'utilise l'excellent script lightbox plus pour mes galeries de photos. Problème : malgré un parfait fonctionnement avec IE, Firefox et Opera, impossible de le faire fonctionner avec Mozilla et Netscape.
Pour tester, j'ai récupéré le code XHTML 1.1 généré par PHP, pour Mozilla ou Netscape, dans le fichier photo.php5. Je l'ai collé dans une page statique, photo.html. A ma grande surprise, ça a marché. J'ai alors cherché du côté du code HTML d'où pouvait provenir cette erreur.
Il faut savoir que j'utilise les templates PHPLib pour générer du HTML, et que je teste le navigateur pour lui envoyer soit du XHTML 1.1, soit du XHTML 1.0 Strict. Voici mon script :
Je serais bien curieux de trouver la solution à ce mystérieux problème. Comment le PHP peut-il intéragir avec le HTML ou le JS !?
Des idées ?
Merci.
Modifié par 84mickael (28 Dec 2006 - 00:37)
J'ai un problème qui me semble assez mystérieux à vous soumettre.
J'utilise l'excellent script lightbox plus pour mes galeries de photos. Problème : malgré un parfait fonctionnement avec IE, Firefox et Opera, impossible de le faire fonctionner avec Mozilla et Netscape.
Pour tester, j'ai récupéré le code XHTML 1.1 généré par PHP, pour Mozilla ou Netscape, dans le fichier photo.php5. Je l'ai collé dans une page statique, photo.html. A ma grande surprise, ça a marché. J'ai alors cherché du côté du code HTML d'où pouvait provenir cette erreur.
Il faut savoir que j'utilise les templates PHPLib pour générer du HTML, et que je teste le navigateur pour lui envoyer soit du XHTML 1.1, soit du XHTML 1.0 Strict. Voici mon script :
<?php
// Si le navigateur gère xhtml+xml => XHTML 1.1
if(stristr($_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml'))
{
$doctype = '<?xml version="1.0" encoding="iso-8859-1"?>'."\n".'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">';
$contentType = 'application/xhtml+xml';
$lang = 'xml:lang="fr"';
$xml = 'xml:';
}
// Sinon => XHTML 1.0 Strict
else
{
$doctype = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
$contentType = 'text/html';
$lang = 'xml:lang="fr" lang="fr"';
$xml = '';
}
header('Content-type:'.$contentType.';charset=ISO-8859-1');
$tpl->set_var('Doctype', $doctype);
$tpl->set_var('ContentType', $contentType);
$tpl->set_var('Lang', $lang);
$tpl->set_var('Xml', $xml);
?>
Et bien j'ai réussi à résoudre ce problème simplement en empêchant la génération de XHTML 1.1, en rempaçant le premier test, par celui-ci :if(false && stristr($_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml'))
Le test est ainsi inutile, je le sais, mais c'était pour tester. Ainsi lightbox plus fonctionne parfaitement avec tous les naviagateurs testés. Ca m'oblige juste à générer obligatoirement du XHTML 1.0 Strict (ce qui n'est pas forcément plus mal, vous me direz).Je serais bien curieux de trouver la solution à ce mystérieux problème. Comment le PHP peut-il intéragir avec le HTML ou le JS !?
Des idées ?
Merci.
Modifié par 84mickael (28 Dec 2006 - 00:37)