|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour à tous,
Je vien a vous, car j'ai décidé d'utiliser Ajaxsur 1 des projets sur lesquelles je travaille. Le probleme, c'est qu'avants de commencer je n'avais aucune notion de JavaScript. Pour me faciliter le travail, j'ai donc fait appel à la librairie Mootools pour me décharger un peut. mon organistion est la suivante : le site fonctionne avec et sans ajax. Toute les page sont généré avec le fichier page.php le get id donne la page qui nous interresse, et le get ajax détermine si la page est appelé en ajax ou non. se qui fait que sans javascript la page est appellé comme ça : page.php?id=1&ajax=0 et avec javascript comme ça : page.php?id=1&ajax=1 en fonction de $_GET['ajax'], page.php retourne la totalité de la page, ou ne retourne que le contenu de la div du contenu. Mes problemes sont les suivants : Quand le client navigue sur le site en ajax, si jamais il veut revenir en arriere avec les fleches du navigateurs, celles ci le redirige vers la dernière requette non ajax. Ce qui fait que la navigation dans le site est bien moin ergonomique à mon sens. Est il possible d'écrire dans l'historique en javascript ? le site fonctionnant a la foit avec et sans ajax, celà permetrait à la personne de revenir en arriere, meme en chargent toute la page, mais au moin, correctement. Dans la meme vene, avec les requette ajax, l'url n'est pas changé, résultat, si la personne qui navigue veut faire un copier coller de l'url de la page qui l'interresse, celà ne la redirigera pas du tout sur la ressource qui l'interresse pour peut qu'elle ai navigué un peut grace à Ajax avant... Et de plus, si elle actualise, elle ne fera qu'actualiser la page avant les requette ajax. est il possible de palier à ça aussi ? autre probleme : certaines page ont besoin d'appeler un javascript spécifique, que je ne peut inclure systématiquement. Cepandant, quand le javascript a été inclut en Ajax, il ne fonctionne pas... Y aurait il une solution à ça aussi ? Je vous remerci beaucoup par avance, car je galaire depuis un moment sur tout ces problemes... |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
En réponse à Thief13 qui écrivit, en date du : 12/08/07 22:02, le
message suivant : > Bonjour à tous, > > Je vien a vous, car j'ai décidé d'utiliser Ajaxsur 1 des projets sur > lesquelles je travaille. > > Pour me faciliter le travail, j'ai donc fait appel à la librairie > Mootools pour me décharger un peut. Je ne sais si une librairie est vraiment "utile" pour ne faire que du simple request ... ? ! > mon organistion est la suivante : le site fonctionne avec et sans ajax. > Toute les page sont généré avec le fichier page.php > > le get id donne la page qui nous interresse, et le get ajax détermine si > la page est appelé en ajax ou non. > > se qui fait que sans javascript la page est appellé comme ça : > page.php?id=1&ajax=0 On peut bien se passer du double envoi (JS !JS) c'est au navigateur de s'en soucier : <a href="?page2" onclick="return ajax(this);">page 2</a> Si pas de JS le lien est envoyé normalement (le fichier php est lu) Si JS l'appel Ajax est lancé et le lien HTML annulé (fichier php zappé) (l'Ajax peut faire appel à un autre fichier php spécifique) > et avec javascript comme ça : > page.php?id=1&ajax=1 > en fonction de $_GET['ajax'], page.php retourne la totalité de la page, > ou ne retourne que le contenu de la div du contenu. Il suffit de n'avoir un php "intelligent" qu'au niveau du div d'insertion, si le JS est activé et la requête reconnue le fichier php ne sera pas lu et seul le fichier à inclure sera appelé. (la fonction de requête peut lancer un fichier php différent de celui déjà affiché (et principal) qui ira chercher le bon fichier requis) > Mes problemes sont les suivants : > > Quand le client navigue sur le site en ajax, si jamais il veut revenir > en arriere avec les fleches du navigateurs, celles ci le redirige vers > la dernière requette non ajax. ? vraiment ? Oui, en effet. > Ce qui fait que la navigation dans le > site est bien moin ergonomique à mon sens. Est il possible d'écrire dans > l'historique en javascript ? Je ne pense pas. > le site fonctionnant a la foit avec et sans > ajax, celà permetrait à la personne de revenir en arriere, meme en > chargent toute la page, mais au moin, correctement. Le visiteur n'a qu'à désactiver son JS ! Non mais ! > Dans la meme vene, avec les requette ajax, l'url n'est pas changé, > résultat, si la personne qui navigue veut faire un copier coller de > l'url de la page qui l'interresse, celà ne la redirigera pas du tout sur > la ressource qui l'interresse pour peut qu'elle ai navigué un peut grace > à Ajax avant... Et de plus, si elle actualise, elle ne fera > qu'actualiser la page avant les requette ajax. est il possible de palier > à ça aussi ? Non. Du moins si, ce doit être +/- possible mais cela reviendrait à faire naviguer via JS comme si on était en mode non-JS (alors ... pourquoi choisir Ajax ?). > autre probleme : certaines page ont besoin d'appeler un javascript > spécifique, que je ne peut inclure systématiquement. Cepandant, quand le > javascript a été inclut en Ajax, il ne fonctionne pas... Y aurait il une > solution à ça aussi ? Rien compris ... Pourquoi ne pas pouvoir inclure ce(s) JS spécifique(s) à la page principale PHP ? (ils ne sont chargés qu'une foi) Pour répondre à la question, le JS chargé via Ajax ne fonctionne pas ... il n'y a qu'à le faire charger en JS "normal" en prévoyant la chose dans le lien de requête. <a href="?p12" onclick="chargeJS('truc.js') return ajax(this);"> page 12</a> function chargeJS(fichier) { var scrpt = document.createElement('SCRIPT'); scrpt.type="text/javascript"; scrpt.src=fichier; document.getElementsByTagName('HEAD')[0].appendChild(scrpt); } Pas certain que ça fonctionne avec IE ... Voir tableau récap de différentes méthodes suivant les navigateurs : http://members.aol.com/_ht_a/hikksnotathome/loadJSFile/ > Je vous remerci beaucoup par avance, car je galaire depuis un moment sur > tout ces problemes... Voir ma tentative navigable avec ET sans JS (via SSI) : http://stephane.moriaux.perso.orange...tpRequest/v_1/ à essayer avec et sans JS. Ou bien : http://stephane.moriaux.perso.orange...tpRequest/v_2/ qui propose menu JS et menu HTML et liens vers sources causant de XHR : http://stephane.moriaux.perso.orange...est/v_2/?liens |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
ASM a écrit :
> > Je ne sais si une librairie est vraiment "utile" pour ne faire que du > simple request ... ? ! > Outre le fait que XHR est appelé diféremment entre IE et Firefox, Mootools ne me sert pas qu'a ça > On peut bien se passer du double envoi (JS !JS) c'est au navigateur de > s'en soucier : > > <a href="?page2" onclick="return ajax(this);">page 2</a> > Haaa, les bonne vielle mauvaise partique genre onclick dans la balise html ont la peau dure à ce que je voi... Et puis ça n'a rien a voir avec ce que je dit, merci quand meme pour l'effort... > Si pas de JS le lien est envoyé normalement (le fichier php est lu) > Si JS l'appel Ajax est lancé et le lien HTML annulé (fichier php zappé) > (l'Ajax peut faire appel à un autre fichier php spécifique) > > > Il suffit de n'avoir un php "intelligent" qu'au niveau du div > d'insertion, si le JS est activé et la requête reconnue le fichier php > ne sera pas lu et seul le fichier à inclure sera appelé. > > (la fonction de requête peut lancer un fichier php différent de celui > déjà affiché (et principal) qui ira chercher le bon fichier requis) Et bin non, c'est bien ce que je dit, rien à voir : c'est le meme fichier qui genere soit la page, soit juste le contenu qui nous interresse en fonction du contenu du paramattre ajax, qui ne coute pas vraiment bien chere à ajouter dans mon URL... Pour moi celà n'est pas un probleme. >> Ce qui fait que la navigation dans le >> site est bien moin ergonomique à mon sens. Est il possible d'écrire dans >> l'historique en javascript ? > > Je ne pense pas. en effet, mais heureusement que quelquepart une personne compétante m'a recommendé ça : http://digitarald.de/project/historymanager/ > Le visiteur n'a qu'à désactiver son JS ! Non mais ! Merci pour cette réflexion intelligente. Et comment fait un aveugle qui navigue avec un lecteur de texte qui ne marche pas avec javascript ? > Non. > Du moins si, ce doit être +/- possible mais cela reviendrait à faire > naviguer via JS comme si on était en mode non-JS (alors ... pourquoi > choisir Ajax ?). ha parce que pour toi, l'interret et la particularité de l'Ajax, c'est d'être privé de l'historique de navigation ? Enfin, pour ceux qui ne considèrent pas ça comme un avantage, re : http://digitarald.de/project/historymanager/ > Rien compris ... > Pourquoi ne pas pouvoir inclure ce(s) JS spécifique(s) à la page > principale PHP ? > (ils ne sont chargés qu'une foi) > tout simplement parce que c'est su Javascript qui ne concerne que le contenu en cours. Heureusement une personne avisé m'a recommendé l'usage de la commande eval() qui résous ce probleme là. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Thief13 wrote:
>> <a href="?page2" onclick="return ajax(this);">page 2</a> >> > Haaa, les bonne vielle mauvaise partique genre onclick dans la balise > html ont la peau dure à ce que je voi... (...) >>> Est il possible d'écrire dans >>> l'historique en javascript ? >> Je ne pense pas. > > en effet, mais heureusement que quelquepart une personne compétante m'a > recommendé ça : (...) > Heureusement une personne avisé m'a recommendé l'usage > de la commande eval() qui résous ce probleme là. ASM est un contributeur très prolifique de ce forum, il ne cherchait qu'à vous aider, votre réponse est en tout point détestable ! On ne peut pas deviner à votre place vos attentes, et si une réponse ne vous convient pas ce n'est pas pour cela qu'elle n'est pas pertinente ou inutile aux autres. Merci de revoir votre attitude. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Thief13 avait écrit le 28/08/2007 :
> Haaa, les bonne vielle mauvaise partique genre onclick dans la balise > html ont la peau dure à ce que je voi... Ceci n'est pas ironique : l'attribut onclick n'est pas recommandé ? Pourquoi. Je l'utilise assez fréquemment... > tout simplement parce que c'est su Javascript qui ne concerne que le > contenu en cours. Heureusement une personne avisé m'a recommendé l'usage > de la commande eval() qui résous ce probleme là. J'crois que eval() n'est pas près recommandée par contre, à confirmer. Merci. -- Delf |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Delf <abuse@wanadoo.fr> wrote:
> J'crois que eval() n'est pas près recommandée par contre, à confirmer. Je pense plutôt qu'il faut l'utiliser avec prudence :-) Thierry -- 4 Calculs & Astronomie en Javascript : <http://astrophoto.free.fr> 3 " Il y a 10 sortes de personnes sur Terre : ceux qui connais- 2 sent le système binaire et ceux qui ne le connaissent pas " 1....'....12.....'....24.....'....36.....'....48.. ...'....60.....'....72 |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Thief13 a écrit :
> ASM a écrit : >> On peut bien se passer du double envoi (JS !JS) c'est au navigateur de >> s'en soucier : >> >> <a href="?page2" onclick="return ajax(this);">page 2</a> >> > Haaa, les bonne vielle mauvaise partique genre onclick dans la balise > html ont la peau dure à ce que je voi... Non, rien à voir. Juste un exemple rapide du concept énoncé. C'est tout. Et puis "onclick" n'est pas banni, selon la DTD utilisée il est tout à fait acceptable. Ou alors, peut être que tu fais du XHTML strict !!! Si tel est le cas, n'essayes pas de faire geek, reviens dans la réalité et retournes sur du bon vieux HTML4.01. XHTML est mort né, il ne faut pas l'utiliser. > Et puis ça n'a rien a voir avec ce que je dit, merci quand meme pour > l'effort... Ben euh Stéphane te signalais juste comme ça en passant que ça semble bizarre d'appeler une page par file.php?id=1&ajax=0 ou file.php?id=1&ajax=1 selon le type de demande. Le ajax=0 semble superflu. L'exemple onclick n'était là que pour te faire pointer du doigt cette subtilité. Tu le prends mal, tant pis. >> (la fonction de requête peut lancer un fichier php différent de celui >> déjà affiché (et principal) qui ira chercher le bon fichier requis) > > Et bin non, c'est bien ce que je dit, rien à voir : c'est le meme > fichier qui genere soit la page, soit juste le contenu qui nous Et alors ? Suis en bonté ce soir : url_rewrite peut-être ? > interresse en fonction du contenu du paramattre ajax, qui ne coute pas > vraiment bien chere à ajouter dans mon URL... > Pour moi celà n'est pas un probleme. Et bien si ce n'est pas un problème, tout va bien. On en reparlera dès qu'il te faudra ajouter ton paramètre GET à une requête POST. >>> Ce qui fait que la navigation dans le >>> site est bien moin ergonomique à mon sens. Est il possible d'écrire dans >>> l'historique en javascript ? >> Je ne pense pas. > > en effet, mais heureusement que quelquepart une personne compétante m'a > recommendé ça : > http://digitarald.de/project/historymanager/ Le sous entendu ne me plait guère ici !!! D'autant que Stéphane à raison : 1) NON il n'est pas possible d'écrire dans l'historique en javascript 2) la soit disant personne compétente ne fait que recommander l'utilisation d'une énième librairie qui manipule bêtement la propriété "hash" de l'objet "top.location". M'enfin chacun son appréciation de la compétence, n'est-ce pas ? 3) Aucun d'entre nous n'est ici pour *ton* besoin. Ici c'est une zone de discussion, on est la pour discuter. On est pas sur un forum payant de résolution de tes problèmes javascript. Que ça ne réponde pas totalement à ton besoin c'est dommage mais pas réprimandable. Si ça ne te conviens pas, tu peux toujours aller faire un tour ailleurs tu sais ! >> Le visiteur n'a qu'à désactiver son JS ! Non mais ! > > Merci pour cette réflexion intelligente. Et comment fait un aveugle qui > navigue avec un lecteur de texte qui ne marche pas avec javascript ? Wow, je suis impressionné par la profondeur d'une remarque si intelligente. Puisqu'il n'a pas javascript, où est son problème ? Son bouton "back" ne marche pas ? Je croyais que le site était JS *et* no JS >> Du moins si, ce doit être +/- possible mais cela reviendrait à faire >> naviguer via JS comme si on était en mode non-JS (alors ... pourquoi >> choisir Ajax ?). > > ha parce que pour toi, l'interret et la particularité de l'Ajax, c'est > d'être privé de l'historique de navigation ? Pffff... Parce que pour toi l'intérêt d'AJAX c'est quoi STP ? Si ce n'est là que pour se prendre la tête comme tu le fais sur ton site juste pour pouvoir avoir le pins "regardes, je fais de l'AJAX qui sert à rien, j'suis un geek". Autant abandonner tout de suite et rester avec des bêtes structures HTML statiques ! Ceci dit, une particularité d'AJAX est *effectivement* d'être privé de l'historique de navigation. C'est comme ça, c'est une de ses spécificités ! >> Rien compris ... >> Pourquoi ne pas pouvoir inclure ce(s) JS spécifique(s) à la page >> principale PHP ? >> (ils ne sont chargés qu'une foi) >> > > tout simplement parce que c'est su Javascript qui ne concerne que le > contenu en cours. Heureusement une personne avisé m'a recommendé l'usage > de la commande eval() qui résous ce probleme là. Lol, pas envie de rencontrer cette personne avisée. Pour qu'il en vienne à te *recommander* l'usage du eval(), je me dis qu'elle n'est pas si recommandable que ça. Bon allez, je suis trop bon, je vais réfléchir 15 secondes à ton problème. Il n'existe actuellement aucune solution fiable à 100%. Tout simplement parce que le "infamous" eval() va entre autre faire voler en éclat les scopes d'exécution. Et les autres "solutions" envisagées ne sont pas plus fiables. <http://groups.google.fr/group/comp.lang.javascript/browse_frm/thread/7120355459a853f1> En considérant que le "problème" est l'insertion de code javascript à travers un réponse XHR (car même si tu es persuadé d'avoir correctement exprimé ton besoin, saches que ce n'était *pas* le cas). Il faudra nécessairement passer par une transformation de la structure de la réponse XHR et par la création de fichier js individuels qui pourront ensuite être insérés ou retirés du document selon les instructions reçus. Pas envie de coder pour toi, et oui tu m'as passablement mis en colère avec ta réponse à Stéphane, mais on a déjà discuté ici de l'insertion dynamique de script, te suffis de chercher. Bien qu'aucune démonstration du problème (url ?) ni aucune ligne de code n'ait été proposée, je suppose à la lecture confuse de ton post initial que tu reçois tout le nouveau contenu HTML par la réponse XHR et que le script remplace directement un quelconque div.innerHTML présent sur la page. C'est cette structure là qu'il va te falloir revoir. Mais bon, j'imagine que tu t'en fou passablement et que ton eval() te suffis largement. Très bien, au revoir donc ou adieu, c'est selon. -- laurent |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
Delf a écrit :
> Thief13 avait écrit le 28/08/2007 : > >> Haaa, les bonne vielle mauvaise partique genre onclick dans la balise >> html ont la peau dure à ce que je voi... > > > Ceci n'est pas ironique : l'attribut onclick n'est pas recommandé ? > Pourquoi. Je l'utilise assez fréquemment... Parce qu'il est préférable (AMHA) d'attacher les gestionnaires d'évènement directement depuis le code Javascript. Il est possible d'avoir une appli intensément ajaxifiée sans qu'il y ait la moindre ligne de javascript dans le html - exception faite bien sûr de l'inclusion (via l'attribut src de la balsie script) des fichiers sources javascript dans le <head /> Un des intérêts de cette approche est qu'on ne pollue pas le marquage (html) avec du code. Ca semble un peu puriste comme argument, mais dans la pratique ça peut nettement simplifier la maintenance. Un autre intérêt est que de cette façon, la gestion des évènements est beaucoup plus fine - entre autre, on peut choisir de laisser l'évènement se propager ou non, attacher plusieurs gestionnaires d'évènement au même évènement, etc. >> tout simplement parce que c'est su Javascript qui ne concerne que le >> contenu en cours. Heureusement une personne avisé m'a recommendé l'usage >> de la commande eval() qui résous ce probleme là. > > > J'crois que eval() n'est pas près recommandée par contre, à confirmer. Disons que ce n'est que très rarement la meilleure solution... |
|
![]() |
| Outils de la discussion | |
|
|