Aller au contenu

Sujets conseillés

Posté

Bonjour à tous et à toutes.

Je suis en train de mettre en place sur mon site le "shopping cart" de Paypal.

L'implentation est simple, il s'agit d'ajouter un formulaire sur chaque page produit.

Malheureusement le code fournit par Paypal n'est pas valide XHTMl 1.0 Strict.

<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<p>
<input type="image" src="https://www..paypal.com/en_US/i/btn/x-click-but22.gif" id="submit" alt="Paiement sécurisé avec Paypal" />
<!-- D'autre balises input cachées -->
</p>
</form>

Quand vous cliquez sur le bouton "add to cart", une nouvelle fenêtre s'ouvre avec les infos du caddie en cours...

Vous aurez de suite remarqué que ce que pose problème est l'attribut target dans la balise form.

La solution la plus simple serait de le supprimer, mais j'aimerais garder le fonctionnement de ce caddie, à savoir son ouverture dans une nouvelle fenêtre.

Je précise aussi que le "clic milieu" sur ce bouton avec Firefox ouvre une page blanche.

Je sais pertinement que celà va à l'encontre des recommandations du W3C, mais je trouve plus confortable ce style de navigation.

Ma question est la suivante : comment remplacer ce target pour ouvrir le resultat du formulaire dans une nouvelle fenêtre, et que le tout soit valide XHTML 1.0 Strict ??

Merci d'avance pour vos réponses.

Posté

L'ouverture d'un lien dans une nouvelle page casse automatiquement l'historique du bouton «Précédent» et c'est une des raisons pour lesquelles ce genre de pratique ne passe plus en mode strict.

Cela dit, pourquoi ne pas faire tes pages en XHTML 1.0 transitional valide?

Je dis cela pour deux raisons :

  • Je ne suis pas sûr que ce que tu demandes là puisse réellement se faire sans JavaScript ou autre bidouillage du genre.
  • La validité XHTML 1.0 strict n'est pas une fin en soit. (Pas plus que la validité tout court, du reste.)

Cordialement,

Normand Lamoureux

Posté

Merci Paginus d'avoir pris le temps de me répondre.

Mon site tourne et toutes mes pages sont valides XHTML 1.0 Strict et je sais que la validation n'est pas une fin en soit.

Cependant, puisque mon code est "propre", j'aurais aimé qu'il le reste ;)

Ensuite si une méthode existe pour réaliser ce que je souhaite (du style javascript comme pour le remplacement des target="_blank" pour un lien classique), je pense que je laisserais le choix à mes visiteur d'ouvrir ou non la page dans une nouvelle fenêtre.

Donc si quelqu'un connait une astuce pour arriver à mes fins, j'en serais ravi.

:)

Posté

Hum... j'abonde dans le sens de Normand : si tu souhaites conserver cette popup, la solution toute indiquée est de passer la page du formulaire en (X)HTML transitional.

C'est un peu un cas d'école sur le choix de la DTD transitional : le choix d'une DTD ne se fait pas sur des critères de "propreté" du code, mais sur l'adéquation avec les conditions de production de celui-ci. Et ici, tu ne contrôles pas la production du code de cette page (script imposé par un prestataire extérieur)...

Ton code ne sera pas moins "propre" pour une page transitional au lieu de strict : ton choix de DTD sera en revanche plus rationnel et moins idéologique ;)

D'autant plus que les "astuces" envisageables en javascript (onsubmit ?) me semble passablement périlleuses...

Posté

Merci pour ces précisions, je pense que je vais donc changer mon DTD ;)

Sauf si quelqu'un a une piste pour faire ça en javascript (onclick), je suis assez curieux de savoir comment on peut arriver à cela.

:)

Posté
Sauf si quelqu'un a une piste pour faire ça en javascript (onclick), je suis assez curieux de savoir comment on peut arriver à cela.

Moi aussi, car les quelques recherches que j'ai fait ce matin sur le sujet ne m'ont mené nulle part, et m'ont laissé le sentiment d'une grossière erreur sur le fond de cette idée... :unsure:

(Quelque-chose sur le fait que les données ne seront pas transmises si la fonction incluse dans le onclick ne retourne pas True...)

Posté

Bonsoir,

J'ai finalement opté pour la solution de changer le DTD et de passer en Transitional.

Merci en tout cas pour vos réponses :)

Posté

Ça me semble une bonne décision.

Le simple fait de vouloir utiliser l'attribut target, c'est t'imposer le seul DTD qui l'accepte. Il y a bien des astuces en Javascript pour tromper le validateur, mais à quoi bon ? Qu'est-ce que ça t'apporterais de plus ? Si tu prône justement une clarté et une pureté de ton code, tu te tiendras sagement à l'écart de ce type d'astuces et tu poursuivras dans la voie du DTD transitionnel qui est tout aussi correct ! ^_^

Au passage, bienvenue parmi nous. :)

Posté

Effectivement, de plus je pense qu'une solution javascript n'existe pas forcement ;)

:blush: Je viens de me voir que je ne me suis pas présenté, j'y vais de ce pas :)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...