Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problème bizarre ... disparaissent

6 réponses
Avatar
unbewusst.sein
problème bizarre sur Google Chrome (extensions désactivées) ET Safari.
la source, dans un éditeur de texte :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"/>
...
<link rel="stylesheet" href="/AB2Html/css/form.css"
type="text/css"/>
<script src="/AB2Html/js/form.js" type="text/javascript"/>
</head>
<body style="direction: ltr;">
<div id="header">
...
</body>
</html>

le document est produit par xslt, les balises sont bien balancées.

ce que voient ces deux navigateurs (firebug) :

<html lang="fr" xml:lang="fr">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Carnet d'adresses d'Yvon Thoraval</title>
<meta name="robots" content="index,follow"/>
<meta name="language" content="fr"/>
<meta name="author" content="Yvon Thoraval"/>
<meta name="generator" content="cousu main"/>
<meta name="description" content="AB2Html est une application Ruby de
publication du Carnet d'adresses MacOS X"/>
<meta name="Keywords" content="Carnet d'adresse, Address Book"/>
<link rel="shortcut
icon" href="/AB2Html/Images/AddressBook.ico" type="images/x-icon"/>
<link rel="icon" href="/AB2Html/Images/AddressBook.ico" type="image/x-ic
on"/>

<style>
<link rel="stylesheet" href="/AB2Html/css/styles.css" type="text/css"/>
<link rel="stylesheet" href="/AB2Html/css/theme.css" type="text/css"/>
<link rel="stylesheet" href="/AB2Html/css/form.css" type="text/css"/>

<script src="/AB2Html/js/form.js" type="text/javascript">
</head>
<body style="direction: ltr;">
<div id="header">
...
</body>
</html>
</script>
</head>

<body></body>
</html>

donc là il y a DEUX <body>...</body>

le premier coincé entre <script ... et </script>

et le second qui provient de firebug...

si j'affiche la source, elle est "normale".

que j'actionne - OU PAS - la console dev web, rien ne s'affiche sur le
butineur.

idem si je supprime xml et dtd :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

le contenu de mon script "form.js" :
window.onload=setup;
var sty;
function setup(){
sty=document.getElementById('search_div').style;
search_switch();
document.getElementById('search_button').onclick=search_switch;
}
function search_switch(){
sty.display=(sty.display=='')? 'none' : '';
}


si je supprime ce script en supprimant :
<script src="/AB2Html/js/form.js" type="text/javascript"/>
ça redevient "normal"...
normal au sens de pas de <body/> dans <script/>...

--
« Si tous ceux qui n'ont rien n'en demandaient pas plus,
il serait bien facile de contenter tout le monde. »
(Coluche)

6 réponses

Avatar
unbewusst.sein
Une Bévue wrote:

si je supprime ce script en supprimant :
<script src="/AB2Html/js/form.js" type="text/javascript"/>
ça redevient "normal"...
normal au sens de pas de <body/> dans <script/>...



ça redevient "normal" si au lieu de :
<script src="/AB2Html/js/form.js" type="text/javascript"/>
(balise auto feermante)
j'ai :
<script src="/AB2Html/js/form.js" type="text/javascript"></script>
--
« Si tous ceux qui n'ont rien n'en demandaient pas plus,
il serait bien facile de contenter tout le monde. »
(Coluche)
Avatar
unbewusst.sein
Une Bévue wrote:

ça redevient "normal" si au lieu de :
<script src="/AB2Html/js/form.js" type="text/javascript"/>
(balise auto feermante)
j'ai :
<script src="/AB2Html/js/form.js" type="text/javascript"></script>



c'est résolu en changeant ma feuille xsl :
<script src="/AB2Html/js/form.js" type="text/javascript"><![CDATA[<!--
javascript -->]]></script>
afin d'éviter autofermeture de <script />


--
« Si tous ceux qui n'ont rien n'en demandaient pas plus,
il serait bien facile de contenter tout le monde. »
(Coluche)
Avatar
Olivier Miakinen
Bonjour,

Le 07/03/2012 14:35, Une Bévue a écrit :
problème bizarre sur Google Chrome (extensions désactivées) ET Safari.
la source, dans un éditeur de texte :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>


^^^^^^^^^^

...
<link rel="stylesheet" href="/AB2Html/css/form.css"
type="text/css"/>
<script src="/AB2Html/js/form.js" type="text/javascript"/>


^^

Tu déclares ta page comme étant du HTML, ce qui fait qu'elle n'est pas
passée à un parseur XML mais considérée comme une soupe de balises HTML
(du HTML avec erreurs, quoi). Or, dans ce cas, le « / » de fin d'une
balise vide est en principe ignoré, et ton <script> est considéré comme
non fermé car il lui manque le </script>.

Si tu tiens absolument au XHTML, alors il vaudrait mieux le déclarer
comme tel afin de bénéficier du contrôle plus strict du parseur (et
afin que ton code ne soit pas considéré comme une soupe de balises).

Voir par exemple <http://www.hixie.ch/advocacy/xhtml.fr/>.

Cordialement,
--
Olivier Miakinen
Avatar
Olivier Miakinen
Le 08/03/2012 18:01, je répondais à La Bévue :

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>


^^^^^^^^^^
Si tu tiens absolument au XHTML, alors il vaudrait mieux le déclarer
comme tel afin de bénéficier du contrôle plus strict du parseur (et
afin que ton code ne soit pas considéré comme une soupe de balises).



Je précise deux choses quand même :
- il ne faut pas le faire tant que tu voudras que ta page soit visible
dans Internet Explorer (au moins jusqu'à la version 8, je ne sais pas
si c'est corrigé dans IE 9) ; ou alors tu dois sniffer le type de
navigateur pour ne l'envoyer qu'à ceux qui supportent ce Content-Type.
- changer le <meta> ne servira à rien si ton serveur déclare aussi
un Content-Type dans les entêtes HTTP, ce qu'il devrait faire en
principe ; tu dois aussi (et même surtout) changer celui-là.

Tu peux aussi décider de rester en HTML (version soupe de balises si ton
Doctype déclare XHTML, version propre s'il déclare HTML 4.01 Strict).

Cordialement,
--
Olivier Miakinen
Avatar
unbewusst.sein
Olivier Miakinen <om+ wrote:


Tu déclares ta page comme étant du HTML, ce qui fait qu'elle n'est pas
passée à un parseur XML mais considérée comme une soupe de balises HTML
(du HTML avec erreurs, quoi). Or, dans ce cas, le « / » de fin d'une
balise vide est en principe ignoré, et ton <script> est considéré comme
non fermé car il lui manque le </script>.

Si tu tiens absolument au XHTML, alors il vaudrait mieux le déclarer
comme tel afin de bénéficier du contrôle plus strict du parseur (et
afin que ton code ne soit pas considéré comme une soupe de balises).

Voir par exemple <http://www.hixie.ch/advocacy/xhtml.fr/>.



OK, merci, j'avoue que je me fiche un peu d'être ou ne pas être en
xhtml, vu que le code html produit est nécessairement bien balancé car
produit par saxon.

comme il n'est pas sûr qu'-x-html ait un intérêt je vai sans doute
passer à html 4.x.x strict.

en tout cas pour la balise auto fermante <script ... />
c'est la première fois que ça m'arrive, je veux dire que seul
"saxon9he.jar" m'a transformé cette balise en autofermante.

je veux dire que la ligne xsl :
<script src="/AB2Html/js/form.js" type="text/javascript"/>

a été transformée en :
<script src="/AB2Html/js/form.js" type="text/javascript"></script>
aussi bien par le proc xslt Ruby que Php.

alors que saxon lui, autoferme :
<script src="/AB2Html/js/form.js" type="text/javascript"/>
càd laisse comme la ligne était dans le code, il a même fallu ruser pour
obtenir un balisage non autofermant :
<script src="/AB2Html/js/form.js" type="text/javascript"><![CDATA[<!--
javascript -->]]></script>
Avatar
unbewusst.sein
Olivier Miakinen <om+ wrote:


Je précise deux choses quand même :
- il ne faut pas le faire tant que tu voudras que ta page soit visible
dans Internet Explorer (au moins jusqu'à la version 8, je ne sais pas
si c'est corrigé dans IE 9) ; ou alors tu dois sniffer le type de
navigateur pour ne l'envoyer qu'à ceux qui supportent ce Content-Type.



ces pages-là, privées, ne sont pas vues par IE.

- changer le <meta> ne servira à rien si ton serveur déclare aussi
un Content-Type dans les entêtes HTTP, ce qu'il devrait faire en
principe ; tu dois aussi (et même surtout) changer celui-là.



ah oui dans ma config apache, ça voudrait dire que soit je mets une
extension "xhtml" à ces fichiers, pour les servir en application xml,
soit je suppose, ce qui n'est pas le cas, que toutes mes pages, sur un
serveur donné sont en xhtml.

Tu peux aussi décider de rester en HTML (version soupe de balises si ton
Doctype déclare XHTML, version propre s'il déclare HTML 4.01 Strict).



Là, je ne pige pas du tout cette phrase.

en tout cas merci pour ces précisions.