PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Ajax désactivé, traitement non exécuté
Ajax désactivé, traitement non exécuté
Débuté par Stéphane, 21 juil. 2014 21:18 - 15 réponses
Membre enregistré
326 messages
Popularité : +5 (5 votes)
Posté le 21 juillet 2014 - 21:18
Bonjour à tous.

J'avais codé un test pour savoir si ajax est activé ou non au démarrage de mon site (WebDev dynamique) afin d'afficher un message d'avertissement à l'utilisateur.

Mais j'avais jamais vérifié que cela fonctionnait , ayant remis à plus tard la désactivation sur les principaux navigateurs.

Et donc je viens d'essayer mais mon site n'affiche jamais mon message.

Le site se lance et là il y a plein de choses qui ne fonctionnent pas, et c'est normal vu que les scripts java sont désactivés.

Voici ce que je fais :

- dans ma première fenêtre, je teste dans le code de chargement de la page :
SI AJAXDisponible() = Faux ALORS
PopupAffiche(Popup_Erreur_Ajax)
RETOUR
FIN

La popup contient juste un libellé du message "Ce site a besoin d'ajax pour fonctionner, etc..." et un bouton pour fermer la popup.

Mais cette popup ne s'affiche pas, bien que j'ai désactivé les scripts java sur tous les navigateurs.

Avez-vous une idée ?

Je sais qu'aujourd'hui la chance (ou malchance) de rencontrer un navigateur sans javascript est très faible, mais je n'aime pas laisser un problème en suspens.

Merci d'avance.
Membre enregistré
1 304 messages
Popularité : +47 (51 votes)
Posté le 22 juillet 2014 - 08:03
Salut Stéphane,

Es-tu certains que tu n'as pas un problème avec la popup ?
Si tu mets uniquement le PopupAffiche() est ce que tu vois la popup ?

A+
Daryl

--
http://www.concept4u2.com
Membre enregistré
1 603 messages
Popularité : +64 (70 votes)
Posté le 22 juillet 2014 - 08:16
Salut Stéphane,
Salut Daryl,

Une autre solution bien plus simple consiste à utiliser les messages furtifs (courts ou longs) avec toastaffiche()

--
Cordialement
François

http://intra.fr http://intrasoftware.fr
Membre enregistré
326 messages
Popularité : +5 (5 votes)
Posté le 22 juillet 2014 - 11:10
Merci de vos réponses.

Daryl : oui oui, je n'ai pas précisé, mais la popup s'affiche bien si je ne mets pas de condition, c'est bien la condition qui pose problème.

François : merci mais ça ne servirait à rien car en fait la popup est juste un test, ce que je veux faire c'est tout un traitement.

D'autres idées ?
Membre enregistré
326 messages
Popularité : +5 (5 votes)
Posté le 22 juillet 2014 - 12:26
Je re-précise un truc :

java est bien désactivé puisque d'une part le site ne fonctionne plus de la même façon (boutons sans effets notamment) et que d'autre part, le site suivant :
http://www.enable-javascript.com/fr/

affiche bien un message indiquant que javascript est désactivé.

Merci.
Posté le 22 juillet 2014 - 14:33
Bonjour Stéphane

tu es en train de confondre AJAX et JavaScript...

Certaine, Ajax a BESOIN de JavaScript pour fonctionner, mais c'est un
sur-ensemble beaucoup plus complexe.

Donc, il faut faire DEUX tests :
1. Tester si JS fonctionne
2. s'il fonctionne, tester si AJAX fonctionne

Pour le premier, ce qu'on fait en général est d'afficher un message
statique disant que JS ne fonctionne pas, puis de le rendre invisible
(ou hauteur zéro) avec une fonction en Javascript.

Pour le deuxième, tu as déjà ton code qui fonctionnera uniquement si JS
est actif.

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com


On 7/22/2014 4:26 AM, "Stéphane" wrote:
Je re-précise un truc :

java est bien désactivé puisque d'une part le site ne fonctionne plus de
la même façon (boutons sans effets notamment) et que d'autre part, le
site suivant :
http://www.enable-javascript.com/fr/

affiche bien un message indiquant que javascript est désactivé.

Merci.
Membre enregistré
326 messages
Popularité : +5 (5 votes)
Posté le 22 juillet 2014 - 17:39
Merci Fabrice :merci: :merci: :merci:

En fait je comprends pas bien un truc : pourquoi le traitement ne passe pas dans la condition AJAXDisponible() = Faux alors que javascript est désactivé ?

A moins que ce soit la fonction "popupaffiche" qui nécessite javascript ?

Bref, quoi qu'il en soit, j'ai inversé le problème en affichant une première page vide avec en plein milieu le message "Ce site a besoin de AJAX etc.." et dans le code navigateur CHARGEMENT, je teste AJAXDisponible et si = VRAI, j'exécute le traitement d'un bouton qui m'affiche la 1ère page de mon site.

Ainsi, si tout fonctionne correctement, la 1ère page de mon site est bien affiché, sinon, la page du message reste affichée.

Est-ce que cela te semble idiot ou bien as-tu une meilleure idée ?

Merci beaucoup.
Membre enregistré
326 messages
Popularité : +5 (5 votes)
Posté le 22 juillet 2014 - 18:22
hum hum :(

Je viens de tester, ça fonctionne bien quand javascript est désactivé.

Lorsque javascript est activé, j'aimerai que le message ne se voit pas du tout au lancement du site, or il s'affiche une demi seconde puis c'est ma première page qui apparait.

J'ai essayé de le rendre invisible puis de le faire apparaitre au bout de quelques secondes via la fonction "timer", (ainsi il n'apparaitrait que si l'on reste sur cette page, donc si javascript est désactivé), mais elle ne se lance même pas, donc le message n'apparaît pas !

En fait la fonction timer est aussi dépendante de javascript ?

Quelles fonctions ne le sont pas alors ?

Avez-vous une précision à m'apporter ?

A votre avis, est-ce que je me prends trop la tête pour un problème qui n'arrivera pratiquement jamais ?

Merci beaucoup.
Membre enregistré
1 304 messages
Popularité : +47 (51 votes)
Posté le 22 juillet 2014 - 18:44
Salut Stéphane,

Je pense que tu te prends la tête même si c'est tout à fait louable de faire ce test.
Pourquoi ne pas simplement mettre "Chargement en cours, si vous restez sur cette page alors c'est que probablement votre JavaScript est désactivé" ?
Comme ça tu n'as pas besoin de timer, l'utilisateur sais qu'il y a un problème et toi tu te facilite la vie :D

A+
Daryl

--
http://www.concept4u2.com
Membre enregistré
326 messages
Popularité : +5 (5 votes)
Posté le 22 juillet 2014 - 20:24
C'est génial ! :p

Ah tu viens de me faire rire ! :D

Merci, je vais faire ça :merci:
Posté le 22 juillet 2014 - 20:41
Bonjour Stéphane

TOUTES les fonctions SONT en Javascript. Ce n'est pas qu'elles en ont
besoin, c'est qu'elles sont ECRITES en JS, sont livrées avec les pages
sous forme de bibliothèques de fonctions JS (comme les dll de windev)

Tu peux voir ces "dll JS" dans le répertoire de ressource de ton site.

Donc, TOUTE INSTRUCTION wlangage en code navigateur est en fait TRADUITE
en JS par webdev et ce parce que un navigateur ne connait que le HTML
pour la mise en page (avec les feuilles CSS) et le Javascript pour le code.

Donc, c'est pour ca que je parlais de mettre un gros message dans
l'entête de tes pages, et d'avoir du code navigateur qui le rend
invisible/hauteur zéro (dans une cellule au dessu de ta page, par exemple)

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com


On 7/22/2014 10:22 AM, "Stéphane" wrote:
hum hum :(

Je viens de tester, ça fonctionne bien quand javascript est désactivé.

Lorsque javascript est activé, j'aimerai que le message ne se voit pas
du tout au lancement du site, or il s'affiche une demi seconde puis
c'est ma première page qui apparait.

J'ai essayé de le rendre invisible puis de le faire apparaitre au bout
de quelques secondes via la fonction "timer", (ainsi il n'apparaitrait
que si l'on reste sur cette page, donc si javascript est désactivé),
mais elle ne se lance même pas, donc le message n'apparaît pas !

En fait la fonction timer est aussi dépendante de javascript ?

Quelles fonctions ne le sont pas alors ?

Avez-vous une précision à m'apporter ?

A votre avis, est-ce que je me prends trop la tête pour un problème qui
n'arrivera pratiquement jamais ?

Merci beaucoup.
Membre enregistré
326 messages
Popularité : +5 (5 votes)
Posté le 23 juillet 2014 - 12:11
Merci Fabrice, t'es trop top :merci:

J'ai plutôt fait comme Daryl me l'a conseillé, car du coup mon site ne fonctionne plus normalement et si je laisse quand même l'accès, j'ai plein de chose invisibles qui apparaissent, aucun bouton ni lien ne fonctionnant, j'ai pas envie qu'un éventuel utilisateur croit que c'est mon site qui bug.

En plus, comme ça j'ai juste une seule instruction à gérer et rien à rajouter sur mes pages.

Tu pense que mon choix n'est pas judicieux ?
Posté le 23 juillet 2014 - 14:03
Bonjour Stéphane
ce que tu as choisi signifie que dans tous les cas NORMAUX (99.99% du
temps) tu affiche une page supplémentaire, et ralentit donc ton site...

Donc, non, j ne pense pas que ce soit optimum.

Si tu ne veux pas qu'on voit ton site quand JS est désactivé, tu fais
DEUX cellules l'une au dessus de l'autre. Celle du haut est visible et
contient le message d'erreur, celle du bas INVISIBLE par défaut et
contient toute ta VRAI page.

Dans le onload, tu rends la première invisible et la seconde visible.
Si pas de JS, on ne voit que le message, si JS, on ne voit que ta page

Pas de page supplémentaire, pas d'attente en plus, et si tu fais un site
awp (ou on peut accéder à n'importe quelle page), et que tu as ca dans
ton modèle de page général, ca marche quelle que soit la page appelée.

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com


On 7/23/2014 4:11 AM, "Stéphane" wrote:
Merci Fabrice, t'es trop top :merci:

J'ai plutôt fait comme Daryl me l'a conseillé, car du coup mon site ne
fonctionne plus normalement et si je laisse quand même l'accès, j'ai
plein de chose invisibles qui apparaissent, aucun bouton ni lien ne
fonctionnant, j'ai pas envie qu'un éventuel utilisateur croit que c'est
mon site qui bug.

En plus, comme ça j'ai juste une seule instruction à gérer et rien à
rajouter sur mes pages.

Tu pense que mon choix n'est pas judicieux ?
Membre enregistré
326 messages
Popularité : +5 (5 votes)
Posté le 23 juillet 2014 - 15:40
Oui, c'est juste.

Sauf que... je l'avais déjà avant cette page (c'est sur ce forum qu'on m'avait conseillé, peut-être même toi ^^)

Car j'ai développé des pages différentes pour l'affichage sous navigateurs mobiles.

Et donc, ma première page permet de lancer la première page de la plateforme (détectée dans le code d'init du projet).

Pour cela, j'ai juste préfixé mes pages différemment et à chaque PAGEAFFICHE, j'indique le préfixe puis le reste du nom de la page.

Enfin bref, je m'éloigne. Donc, je l'ai cette page et je le lançais déjà le traitement (qui ne s'exécutera pas sans javascript) d'affichage de ma première page.

En fait, par rapport à ce que je faisais avant, je n'ai rajouté que le test "AJAXDISPONIBLE".

Je prends ton avis TRES TRES au sérieux, et je pense que tu as absolument raison alors aux vues de cette histoire de page pour la plateforme, tu pense que je devrais changer ou pas ?

A noter que j'ai cette page intermédiaire car WebDev m'oblige a choisir une page de démarrage et cela m'a été conseillé il y a longtemps ici.
Posté le 23 juillet 2014 - 16:14
Rebonjour

il n'y a pas de réponse absolue... Si tu as déjà cette page, tu peux
certainement continuer comme ca, mais :

- le choix dépend en réalité des stats de ton site. Si la grande
majorité de tes utilisateurs est "classique' - pas mobile), tu les
retarde avec ta page de démarrage et tu peux optimiser en mettant
l'aiguillage sur la première page classique. Si c'est l'inverse, tu peux
afficher la page mobile par défaut et permuter si nécessaire.

- en plus de ca, la plupart des sites ne font pas l'aiguillage de
manière automatique, les mobiles d’aujourd’hui ayant souvent des écrans
suffisamment grand pour afficher le site complet. Donc, ils détectent la
plateforme mobile et PROPOSENT à l'utilisateur de changer pour le site
mobile. Et ils laissent sur celui-ci un moyen de revenir au site
classique pour quand l'utilisateur en a marre de cliquer toute le temps
pour passer à la suite, ou pour quand il se rend compte que LA fonction
qui l'intéresse n'est pas dispo en mode mobile.

Mais c'est un choix qui se fait au cas par cas, en fonction de TON site

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com


On 7/23/2014 7:40 AM, "Stéphane" wrote:
Oui, c'est juste.

Sauf que... je l'avais déjà avant cette page (c'est sur ce forum qu'on
m'avait conseillé, peut-être même toi ^^)

Car j'ai développé des pages différentes pour l'affichage sous
navigateurs mobiles.

Et donc, ma première page permet de lancer la première page de la
plateforme (détectée dans le code d'init du projet).

Pour cela, j'ai juste préfixé mes pages différemment et à chaque
PAGEAFFICHE, j'indique le préfixe puis le reste du nom de la page.

Enfin bref, je m'éloigne. Donc, je l'ai cette page et je le lançais déjà
le traitement (qui ne s'exécutera pas sans javascript) d'affichage de ma
première page.

En fait, par rapport à ce que je faisais avant, je n'ai rajouté que le
test "AJAXDISPONIBLE".

Je prends ton avis TRES TRES au sérieux, et je pense que tu as
absolument raison alors aux vues de cette histoire de page pour la
plateforme, tu pense que je devrais changer ou pas ?

A noter que j'ai cette page intermédiaire car WebDev m'oblige a choisir
une page de démarrage et cela m'a été conseillé il y a longtemps ici.
Membre enregistré
326 messages
Popularité : +5 (5 votes)
Posté le 23 juillet 2014 - 17:47
Très intéressante ta réflexion :merci:

Et à y réfléchir, je me dis que mes pages adaptées aux mobiles ne vont pas servir longtemps vu que nous avons l'intention de développer à terme sous Windev Mobile.

Je vais me pencher sur ton deuxième point, merci beaucoup, tu m'aide beaucoup et je t'en suis très reconnaissant.