11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Oui bon j'y vais un peu fort sur le titre... mais bon, c'est juste un petit sondage.

J'aimerais savoir, si vous êtes obligé de choisir parmi l'une de ces solutions, laquelle choisirez-vous ?

Proposition 1 :
<a href="#" onclick="...">Lien exclusivement javascript</a>


Proposition 2 :
<a href="javascript:...">Lien exclusivement javascript</a>


PRoposition 3 :

<script type="text/javascript">//<![CDATA[
document.write('<a href="javascript:...">Lien exclusivement javascript</a>');
//]]></script>


Proposition 4 :

<script type="text/javascript">//<![CDATA[
document.write('<a href="#" onclick="...">Lien exclusivement javascript</a>');
//]]></script>


Le lien est absolument inutile si javascript n'est pas disponible.

Remarque : IL va évidemment de soi que la meilleure solution est d'utiliser un javascript externe, mais ce ne sera pas le débat ici.

Au fond la question est la suivante : que pensez-vous de l'utilisation de document.write pour la création de contenu exclusivement javascript, c'est-à-dire des contenus inutilisables si javascript est inactif ?

Merci pour vos réponses.
Modifié par QuentinC (12 Dec 2006 - 18:53)
Modérateur
salut,

Quitte à faire de l'intrusif, je vote pour la proposition n°3... Smiley ravi

Ca laisse de grosses traces dans le code source mais c'est plus fonctionnel, en effet, parce qu'inexistants (plutôt qu'inutilisables) si JS est désactivé... ce qui représente l'effet recherché... Smiley cligne
Hello,

Je vote pour la 4. Par contre, ça ne marchera pas si le document est servi en tant que "application/xhtml+xml".
Bonjour,

koala64 a écrit :
Je maintiens la n°3 parce que href="#" ne sert à rien ! Smiley lol

Pas tout à fait, href="#" renvoi en haut de page. (Vu sur IE, FF et opera).
Modifié par papillon41 (12 Dec 2006 - 18:43)
J'étais sûr que Koala64 allait être und des premiers à réagir sur un tel sujet...

Merci Koala64, tu confirmes ce que je pensais. Avant même d'écrire ce post j'avais prévu la proposition 3, mais je voulais quand même m'assurer que c'était la meilleure idée.

JE voudrais bien faire du js externe mais dans le contexte où je suis c'est pas possible, le script utilise des variables de sessions, des requêtes SQL et d'autres infos provenant du php, et ce serait quand même embêtant de devoir tout récupérer à double une fois dans le fichier de la page HTML et une deuxième fois dans le .php qui contiendrait le javascript. D'autant plus que c'est relativement court comme script et que les requêtes assez complexes.

Merci.
koala64 a écrit :
Je maintiens la n°3 parce que href="#" ne sert à rien ! Smiley lol
Oui, enfin, le protocole "javascript:" n'est a priori dans aucune spec. Et puis, pour ma part je préfère la 4 pour une question d'esthétique de statut. Smiley cligne

Par contre, "#" ne renvoie pas en haut de page avec Opera.
Modérateur
En effet, vu qu'il est déconseillé de coder en intrusif... Ce n'est donc pas standard mais vu qu'ici, QuentinC l'a défini comme obligation, ben voilà.

Etant donné que ce lien ne sert qu'à lancer une fonction et non à me renvoyer à un autre endroit, je préfère au contraire être prévenu via la barre de statut plutôt que de devoir tricher... J'en fais un vrai bouton et non un pseudo-lien... Smiley murf
Bah, href="#" ne renvoie pas forcément en haut de page. Suffit de ne pas oublier le return false dans le onclick.

Par contre j'ai remarqué des comportements différents de jaws selon qu'on choisisse l'un ou l'autre.

j'avais par exemple un problème avec jaws 4.5 à l'époque quand on prenait celui qu'il ne fallait pas et qu'on lançait un confirm : le résultat était qu'à la place de lire le contenu de la boîte, cela faisait "geler" l'ordinateur : jaws arrêtait de parler et l'ordinateur refusait de fonctionner tant que la boîte n'était pas fermée avec Alt+F4 (je précise, hein, pas question de OK, de annuler, de enter ou échap : Alt+F4 uniquement !)
Exception faite quand le mode formulaire était actif ou ça fonctionnait dans tous les cas de figure.
Faudrait que je reteste pour pouvoir dire lequel des deux le faisait, comme ça je ne sais plus et ça fait un moment que ça ne me l'a pas refait.
QuentinC a écrit :
le résultat était qu'à la place de lire le contenu de la boîte, cela faisait "geler" l'ordinateur
Arf, pratique... Smiley eek

En tout cas, si tu peux retester, ça peut en effet être intéressant à savoir.
koala64 a écrit :
Etant donné que ce lien ne sert qu'à lancer une fonction et non à me renvoyer à un autre endroit, je préfère au contraire être prévenu via la barre de statut plutôt que de devoir tricher... J'en fais un vrai bouton et non un pseudo-lien... Smiley murf
Oui, mais quelle est la différence avec un lien généré en JavaScript via le DOM ?
Modifié par Eldebaran (12 Dec 2006 - 21:28)
QuentinC a écrit :
Bah, href="#" ne renvoie pas forcément en haut de page. Suffit de ne pas oublier le return false dans le onclick.


ba ya un truc qui ne renvoit jamais en haut de page et c'est <a href="#ancre_qui_nexiste_pas">

perso je met #here quand je veux me la péter hype anglophone ou #ici quand je suis raisonnable.

En fait ça me sert assez peu en javascript mais surtout pour éviter la soupe à la grimace de certain validateur d'accessibilité sur href="#".

Par exemple : dernier élément d'1 fil d'ariane mis en lien sans destination pour ancrer l'accès direct "aller au contenu". Soit :

Vous êtes ici : ... > ... > <a href="#ici" id="contenu" name="contenu">Ici</a>
Modifié par clb56 (12 Dec 2006 - 22:57)
Salut,
clb56 a écrit :
Par exemple : dernier élément d'1 fil d'ariane mis en lien sans destination pour ancrer l'accès direct "aller au contenu". Soit :

Vous êtes ici : ... > ... > <a href="#ici">Ici</a>
Je ne comprends pas ton exemple. A quoi ça sert ?
Eldebaran a écrit :
Salut,Je ne comprends pas ton exemple. A quoi ça sert ?


Ah oui j'avais oublié le id et le name pour obtenir l'ancrage. C'est corrigé.
clb56 a écrit :
Ah oui j'avais oublié le id et le name pour obtenir l'ancrage. C'est corrigé.
Nouvelle question con : pourquoi ne pas mettre #contenu dans ce cas-là ?
Eldebaran a écrit :
Nouvelle question con : pourquoi ne pas mettre #contenu dans ce cas-là ?


No problemo pour moi, mais pourquoi le faire, d'un autre coté ?

Sinon pour rester dans l'esprit du troll mardÿste de Quentin je dirais que
a écrit :

<a href="#content">


Même si ça frime bien, je tiens à rester honnête...

C'est quand même moins hype, moins feng shui, moins carpe diem et moins ère du verseau que :
a écrit :

<a href="#here">


Donc en toute mauvaise foi je pense qu'il est impossible d'hésiter.


Bon, plus sérieusement je pense que si tu envoies un lien vers une ancre qui n'est autre que lui même, alors tu le rends actif. Dans le cas que j'ai décrit je pense qu'il doit rester rigoureusement inactif (ce qui est en vue avec le <a href="#"> d'ailleurs). Celà pourrait causer quelques désagrément (très mineur je l'accorde) en cas de navigation clavier mode non graphique = quelque chose se passe (un scroll) là où rien n'aurait du se passer.
Modifié par clb56 (12 Dec 2006 - 23:35)
clb56 a écrit :
Bon, plus sérieusement je pense que si tu envoies un lien vers une ancre qui n'est autre que lui même, alors tu le rends actif. Dans le cas que j'ai décrit je pense qu'il doit rester rigoureusement inactif (ce qui est en vue avec le <a href="#"> d'ailleurs). Celà pourrait causer quelques désagrément (très mineur je l'accorde) en cas de navigation clavier mode non graphique = quelque chose se passe (un scroll) là où rien n'aurait du se passer.
OK, je garderai en mémoire la réponse sérieuse. Smiley cligne

<edit>Pourquoi pas #page2.0 ?</edit>
Modifié par Eldebaran (12 Dec 2006 - 23:53)
Eldebaran a écrit :
<edit>Pourquoi pas #page2.0 ?</edit>


Ouè, ouè, là c trop facile de répondre Smiley lol

pour pas faire comme tout le monde c'est évident ^^