Question

Quoi? Je voudrais pouvoir faire une demande de poste (ne doit pas être données de formulaire) dans une nouvelle fenêtre sans utiliser l'attribut cible (validation XHTML).

Pourquoi? J'ai un webapp (en utilisant jQuery) où l'utilisateur sélectionne un certain nombre d'entrées à imprimer. Chaque identifiant d'entrée doit être envoyée à une page de traitement qui affiche une version imprimable des entires. Je ne veux pas diriger l'utilisateur loin de la webapp pour imprimer et je ne peux pas utiliser dans une fenêtre contextuelle obtenir parce que le nombre de ids d'entrée pourrait devenir trop grand pour tenir dans une URL.

Je l'ai googlé et lu plusieurs forums et la plupart des gens semblent suggérer soit l'attribut cible directement ou l'insérer en utilisant JavaScript. J'espérais éviter ces deux solutions.

Est-ce possible et si oui, comment?

Merci d'avance:)

Était-ce utile?

La solution

En Javascript, intercepter la soumission du formulaire, remplir une deuxième forme avec seulement des champs cachés avec les valeurs que vous voulez, et soumettre ce formulaire à la place.

Autres conseils

est ce que le target attribut est pour. Réglez-le sur « _blank » pour ouvrir une nouvelle fenêtre. Si vous voulez que votre balisage soit valide (ce qui est le point? Je vous assure que vos utilisateurs se fichent de la validité de votre balisage!), Puis utilisez Javascript pour définir la cible de la charge de la page ...

window.onload = function() {
  document.forms[0].target = '_blank';
}

Il n'y a pas d'autre moyen.

Pour cibler le haut de la page en cours et sortir de tout frameset actuellement utilisé que vous utilisez <a href="page.htm" target="_top"> en HTML. En Javascript que vous utilisez:

top.location.href = 'page.htm';

Pour cibler la page en cours ou image que vous pouvez utiliser <a href="page.htm" target="_self"> en HTML. En Javascript que vous utilisez:

self.location.href = 'page.htm';

Pour cibler le cadre parent, vous pouvez utiliser <a href="page.htm" target="_parent"> en HTML. En Javascript que vous utilisez:

parent.location.href = 'page.htm';

Pour cibler un cadre spécifique au sein d'un jeu de cadres, vous pouvez utiliser <a href="page.htm" target="thatframe"> en HTML. En Javascript que vous utilisez:

top.frames['thatframe'].location.href = 'page.htm';

Pour cibler un iframe spécifique dans la page courante, vous pouvez utiliser <a href="page.htm" target="thatframe"> en HTML. En Javascript que vous utilisez:

self.frames['thatframe'].location.href = 'page.htm'; 

Le target d'attribut de l'élément de <form> est valide XHTML 1.0 transitoire ..

Si vous utilisez XHTML 1.1 ou 1.0 Strict alors le <iframe> n'est pas une étiquette valide en premier lieu ..

Vous pouvez utiliser Javascript window.open pour « pop » la nouvelle fenêtre et utiliser les paramètres GET dans l'URL pour passer des arguments ... Mais l'OMI, il est pire que d'utiliser l'attribut cible dans doctype de transition.

La meilleure façon de le faire est une nouvelle fenêtre « faux » qui est créé à la volée dans les DOM et se remplit par des appels AJAX. De cette façon, vous ne pas « casser » l'expérience utilisateur (en ouvrant une nouvelle fenêtre).

Si vous définissez un champ caché dans la page qui ouvre la nouvelle fenêtre (appeler EntryIDs) avant d'ouvrir une nouvelle fenêtre à partir de la page d'appel, vous pouvez faire référence dans la page ouverte comme ceci:

$(function() {
    var $opener = $(window.opener.document);
    var entryIds = $opener.find("#entryIds").val();
    // do something with the ids
});  

L'inconvénient est que vous êtes maintenant à gauche pour afficher les détails de votre entrée via javascript ainsi. Pas besoin de faire un poste de forme du tout.

Si vous vous sentez fringants vous pouvez toujours définir les IDs d'entrée dans une session ou un cookie (via un appel de service web) sur la page d'ouverture avant d'ouvrir la nouvelle fenêtre, et saisir la session sur la page ouverte afin que vous puissiez construire la page d'impression du côté du serveur à la place.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top