Domanda

Che cosa? Mi piacerebbe essere in grado di fare una richiesta POST (non deve essere dati del modulo) ad una nuova finestra senza utilizzare l'attributo di destinazione (validazione XHTML).

Perché? Ho una webapp (usando jQuery), dove l'utente seleziona un numero di voci da stampare. Ogni id voce deve essere inviato a una pagina di elaborazione che visualizzerà una versione stampabile degli interi. Io non voglio indirizzare l'utente lontano dalla webapp per la stampa e non posso usare ottenere in un pop-up, perché il numero di ID di ingresso potrebbe diventare troppo grande per entrare in un URL.

Googled e letto diversi forum e la maggior parte delle persone sembrano suggerire sia l'attributo di destinazione direttamente o inserirla utilizzando JavaScript. Speravo di evitare entrambe queste soluzioni.

Questo è anche possibile e se sì, come?

Grazie in anticipo:)

È stato utile?

Soluzione

In JavaScript, intercettare l'invio del modulo, compilare un secondo modulo con campi nascosti solo con i valori che si desidera, e inviare quella forma, invece.

Altri suggerimenti

Questo è ciò che l'attributo target è per. Impostarlo su "_blank" per aprire una nuova finestra. Se si desidera che il markup sia valido (qual è il punto? Vi assicuro che gli utenti potrebbero interessare di meno la validità del vostro codice!), Quindi utilizzare Javascript per impostare la destinazione al caricamento della pagina ...

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

Non c'è altro modo.

Per indirizzare parte superiore della pagina corrente e uscire da qualsiasi frame attualmente in uso si usa <a href="page.htm" target="_top"> in HTML. In Javascript si utilizza:

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

Per indirizzare la pagina corrente o il frame è possibile utilizzare <a href="page.htm" target="_self"> in HTML. In Javascript si utilizza:

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

Per indirizzare il frame principale è possibile utilizzare <a href="page.htm" target="_parent"> in HTML. In Javascript si utilizza:

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

Per individuare un fotogramma specifico all'interno di un frame è possibile utilizzare <a href="page.htm" target="thatframe"> in HTML. In Javascript si utilizza:

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

Per individuare un iframe specifico all'interno della pagina corrente è possibile utilizzare <a href="page.htm" target="thatframe"> in HTML. In Javascript si utilizza:

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

Il target attributo dell'elemento <form> è valida in XHTML 1.0 di transizione ..

Se si utilizza XHTML 1.1 o 1.0 Strict allora il <iframe> non è un tag valido in primo luogo ..

Si potrebbe utilizzare JavaScript window.open per "pop" della nuova finestra e utilizzare ottenere i parametri nell'URL per passare gli argomenti ... Ma IMO è peggio che utilizzando l'attributo di destinazione in doctype di transizione.

Il modo migliore per farlo è un "falso" nuova finestra che si crea al volo nel DOM e popola stesso da chiamate AJAX. In questo modo non si "rompere" l'esperienza dell'utente (con l'apertura di una nuova finestra).

Se si imposta un certo campo nascosto nella pagina che si apre la nuova finestra (lo chiamano EntryID) prima di aprire una nuova finestra dalla pagina chiamante, è possibile fare riferimento nella pagina aperta in questo modo:

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

Lo svantaggio è che si sono ora a sinistra per visualizzare i dati di ingresso tramite JavaScript pure. Non c'è bisogno di fare un post modulo a tutti.

Se ti senti frisky si può sempre impostare gli ID di ingresso in una sessione o cookie di (tramite un servizio web chiamata) sulla pagina di apertura prima di aprire la nuova finestra, e afferrare la sessione sulla pagina aperta in modo da poter costruire la pagina di stampa sul lato server invece.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top