Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Insérer fichier "*.js" dans "html"


fantassin-06
 Partager

Messages recommandés

Bonjour,

 

j'ai un petit problème de script (script récupéré dans le labo de Kewlcat et bidouillé sans réelle connaissance de ma part :P ) dans mon html.... :P Sachant que le script fonctionne en l'état mais qu'il ne me satisfait pas. :P

 

Pourquoi ? Tout simplement parce que la page ne passe pas à la validation W3C ( voir ici ) ( 9 erreurs ) :P

 

La page : http://fantassin-06.ovh.org/fantavision.html

 

La construction de la page :

 

Dans le <head></head> du "html", j'ai mis "<script src="menu.js" type="text/javascript"></script>".

Dans le fichier "menu.js" j'y ai inscrit les variables.

Dans le <div></div>, j'ai mis :

 

<form>choisir une catégorie :<br />

<select name="choixart" onchange="chgart(this.form)">

<option>faites votre choix</option>

<option>videos</option>

<option>fantassin-06.ovh.org</option>

</select><br />

 

cliquer sur une des options :<br />

<select name="lstart" multiple="multiple"

onclick="window.location.assign(this.value)">

</select></form>

 

Le problème semble reposer sur le <form> qui ne passe pas.... Alors j'avais rajouté "<form type="text/javascript">". Mais cela ne passe pas non plus.

 

En cherchant sur différents sites, j'ai essayé d'inclure le code en bleu ci dessus dans le "menu.js" et de le rappeler dans le <div></div> du html par "<script LANGUAGE=Javascript SRC="menu.js"> </SCRIPT>"

 

puis par un "document.write("...")". Mais rien n'y fait.... Dans les deux cas, les variables n'apparaissent plus. Donc retour à ce qui marche mais avec l'absence de la validation.

 

Quelqu'un pourrait il m'aider please....

 

Merci :P

Modifié par fantassin-06
Lien vers le commentaire
Partager sur d’autres sites

La validation W3C ne "passe" pas parce que la balise <form> n'est pas un conteneur et qu'il faut que son contenu ne soit pas laissé en liberté : il est conseillé d'utiliser des fieldsets (ou au pire, puisqu'on doit utiliser un bloc à l'intérieur d'un formulaire, des divs)

 

Notes :

- un formulaire attend forcément un attribut "action" pour indiquer où il doit envoyer les données saisies lors de leur validation

- la balise <script> n'a pas d'attribut language (pas en HTML4 ni XHTML) : il faut utiliser type="text/javascript"

- inclure du code en utilisant des document.write() afin de passer la validation W3C c'est plutôt tordu ;-) Si le code ne valide pas, ce 'nest pas parce que tu le planques au validateur qu'il sera subitement valide après avoir été inséré en JavaScript !

Lien vers le commentaire
Partager sur d’autres sites

merci de la réponse qui m'a mis sur la piste du "fieldsets". Cela m'a amené (avec google) à ce genre de lien ( voir ici, ici ou pour ceux que ça intéresse) je ne cite que ces 3 là mais j'en ai fait un paquet.... :P

 

Je n'irai pas jusqu'à dire que j'ai tout compris mais cela m'a permis de passer le cap de 8 erreurs. :P

 

Mais voilà, il y en a une dernière que je ne comprend pas ( voir ici ).

 

</select>

 

Most likely, You nested tags and closed them in the wrong order. For example <p><em>...</p> is not acceptable, as <em> must be closed before <p>. Acceptable nesting is: <p><em>...</em></p>

 

Another possibility is that you used an element which requires a child element that you did not include. Hence the parent element is "not finished", not complete. For instance, <head> generally requires a <title>, lists (ul, ol, dl) require list items (li, or dt, dd), and so on.

 

Il me semble que j'ai bien respecté l'ordre de fermeture des "tags" et je ne vois pas quel est l'élément qu'il faudrait inclure absolument... :P

 

Pour le :

 

- inclure du code en utilisant des document.write() afin de passer la validation W3C c'est plutôt tordu :P Si le code ne valide pas, ce 'nest pas parce que tu le planques au validateur qu'il sera subitement valide après avoir été inséré en JavaScript !

 

il faut mettre ça sur le compte des "loufoqueries" du "newbie" :P Je n'ai aucune compétence particulière en matière informatique et je ne fais qu'essayer de manière (qui me semble) "logique" des recettes trouvées sur le net. Autant mon approche de départ du "html/css" a été astreinte à une légère rigueur d'apprentissage des bases (très léger tout de même, cela reste de la bidouille), autant l'utilisation de ton "script" c'est effectué de manière "très" personnel (je suis parti des éléments donnés pour en rechercher des trames d'explication au grès de ce que je voulais en faire). Le jeu ensuite a consisté à ramener ma tambouille dans le giron de la W3C (sachant que la validation n'amène qu'une forme plus conventionnel de la codification mais qu'elle ne permet en aucun cas de tirer des plans sur la comète quant à la technicité de mon travail).

 

Autant dire que c'est simplement une "mixture" a des fins de loisir et d'apprentissage personnel. :P

 

Dans ce cadre, les remarques de ce type me permettent d'avancer :P

Lien vers le commentaire
Partager sur d’autres sites

  • Modérateurs

Salut Fantassin !

 

Dis-moi, si c'est là que ça se passe (parce que je n'ai pas retrouvé la correspondance en numérotation de lignes),

 

<fieldset>cliquer sur une des options :<br>
 <select name="lstart" multiple="multiple" onclick="window.location.assign(this.value)">
 </select>
</fieldset>

ton erreur ne serait-elle pas due au fait que tu as fait un select vide ? Il ne contient en effet aucune option...

Lien vers le commentaire
Partager sur d’autres sites

Salut Fantassin !

 

Dis-moi, si c'est là que ça se passe (parce que je n'ai pas retrouvé la correspondance en numérotation de lignes),

 

<fieldset>cliquer sur une des options :<br>
 <select name="lstart" multiple="multiple" onclick="window.location.assign(this.value)">
 </select>
</fieldset>

ton erreur ne serait-elle pas due au fait que tu as fait un select vide ? Il ne contient en effet aucune option...

Salut Dylav,

 

effectivement c'est là que ça se passe !

 

bah, j'ai pas mis d'option parce que le code d'origine était donné comme cela et que ça fonctionne... :P Je vois vraiment pas ce que je pourrai rajouter ? Mais bon je ne suis pas un pro.... :P

Lien vers le commentaire
Partager sur d’autres sites

  • Modérateurs

Soyons clairs. Lorsque tu mets en oeuvre une balise <select>, c'est bien pour proposer une série de balises <option> parmi lesquelles ton lecteur pourra exprimer son choix. C'est d'ailleurs bien ça que tu écris, au-dessus de la rubrique en question : "cliquer sur une des options" (au passage, il me semble même que multiple="multiple" permet de sélectionner plusieurs options ensemble).

55750811an9.jpg

 

Alors, j'ignore si l'erreur signalée par le validateur W3C provient de l'absence de balises <option>, mais j'ai surtout l'impression que tu n'as pas besoin de mettre en oeuvre cette sélection, et que tu peux donc supprimer tout le <fieldset> qui l'encapsule...

<fieldset>cliquer sur une des options :<br>

<select name="lstart" multiple="multiple" onclick="window.location.assign(this.value)">

</select>

</fieldset>

... et le validateur devrait te réserver une bonne surprise ! :P

Lien vers le commentaire
Partager sur d’autres sites

Alors, j'ignore si l'erreur signalée par le validateur W3C provient de l'absence de balises <option>, mais j'ai surtout l'impression que tu n'as pas besoin de mettre en oeuvre cette sélection, et que tu peux donc supprimer tout le <fieldset> qui l'encapsule...

Re dylav,

 

:P Si je ne met pas en oeuvre cette selection, il n'y pas de choix possible. En effet, en enlevant le deuxième <fieldset> et en cliquant sur "faites votre choix" / "vidéos", la sélection n'apparait plus. :P

 

Donc le problème reste entier... :P

Lien vers le commentaire
Partager sur d’autres sites

  • Modérateurs

Bonjour Fantassin !

 

Je te prie tout d'abord d'excuser ma remarque d'hier matin, qui était une fausse piste de chez FaussePiste... Le second champ de sélection est en fait un sous-menu contextuel créé par le script JavaScript au vu du choix effectué dans le menu principal (premier champ de sélection). Il est donc compréhensible que ce second champ ne comporte au départ pas d'options.

 

Je ne vois alors que deux solutions,

  • soit tu laisses les choses en l'état, en ignorant les injures du validateur,
  • soit tu tentes d'introduire une option fantôme dans le second <select>, qui sera probablement écrasée par celle(s) du JavaScript :
    <fieldset>cliquer sur une des options :<br>
    <select name="lstart" multiple="multiple" onclick="window.location.assign(this.value)">
    <option>&nbsp;</option>
    </select>
    </fieldset>

Lorsque je teste cette seconde solution (&nbsp; est la codification d'un caractère espace), tout va bien en apparence, mais il se produit ensuite une erreur de script... c'est peut-être dû à mon environnement partiel.

 

Ceci dit, je ne comprends pas la présence de l'attribut multiple="multiple", puisqu'il n'est pas question, dans ce contexte, de faire deux choix à la fois ?

 

Dernière remarque : ta solution implique l'exécution d'un script JavaScript pour pouvoir naviguer sur ton site. Ce n'est peut-être pas judicieux, car par sécurité les internautes avertis (en particulier par Zébulon) interdisent à leur navigateur d'exécuter des scripts ! D'où un blocage complet... Parmi les solutions alternatives, j'ai le souvenir d'avoir lu un article sur les menus à niveaux multiples sur le site pompage.net, La vengeance des menus déroulants. Tu pourras également y lire Domptez vos puces, dressez des listes, Arrière-plans cliquables et plein d'autres articles passionnants... :P

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Je reprendrais ce que m'a renvoyé ma responsable il y a peu : "il n'y a que ceux qui ne font rien qui ne se trompe jamais. :P

 

J'ai gardé les puces cliquables sur lesquelles tu avais trouvé un solution qui fonctionne pour d'autre page... ( voir l'aide apportée ici ) :P

 

Mais j'avais envie de changer un peu pour cette page là en particulier. Juste parce c'est pas marrant de répéter les trucs qui fonctionnent. Y a pas d'intérêt au niveau apprentissage. :P

 

J'avais bien pensé "grugger" le validateur mais c'est pas très "sport" comme raisonnement. :P

 

Dernière remarque : ta solution implique l'exécution d'un script JavaScript pour pouvoir naviguer sur ton site. Ce n'est peut-être pas judicieux, car par sécurité les internautes avertis (en particulier par Zébulon) interdisent à leur navigateur d'exécuter des scripts !

 

rajout fantassin-06: Pourquoi "flipper" dans un monde aussi tranquille :P

 

Par contre, le lien sur "la revanche des menus déroulantes" aurait tendance à m'inciter à revoir mon jugement sur les puces.... :P

 

A plus

Lien vers le commentaire
Partager sur d’autres sites

  • Modérateurs
J'avais bien pensé "gruger" le validateur mais c'est pas très "sport" comme raisonnement.

Dans mon esprit, il ne s'agissait pas de tromper le validateur, mais d'appliquer ses règles pour qu'il cesse de m'engu... où est la tromperie ? :P

 

Par contre, le lien sur "la revanche des menus déroulantes" aurait tendance à m'inciter à revoir mon jugement sur les puces... :P

Je trouve extrêmement précieux la quasi-totalité des articles publiés en français sur le site pompage.net. L'esprit en est parfois un peu guru, mais la plupart sont très pratiques, et proposent des solutions particulièrement élégantes à des problèmes pas toujours simples... :P

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

 Partager

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...