Pregunta

¿Qué? Me gustaría ser capaz de hacer una solicitud posterior (no tiene que ser datos de forma) a una ventana nueva sin usar el atributo de destino (la validación XHTML).

¿Por qué? Tengo una aplicación web (usando jQuery) cuando el usuario selecciona un número de entradas a imprimir. Cada identificador de entrada debe ser enviado a una página de procesamiento que mostrará una versión imprimible de los entires. No quiero dirigir al usuario lejos de la aplicación web para imprimir y no puedo usar ponerse en una ventana emergente debido a que el número de identificadores de entrada podría llegar a ser demasiado grande para caber en una dirección URL.

He buscado en Google y leer varios foros y la mayoría de las personas parecen sugerir la diana atributo directa o insertarlo uso de JavaScript. Tenía la esperanza de evitar estas dos soluciones.

¿Es esto posible y si es así, ¿cómo?

Gracias de antemano:)

¿Fue útil?

Solución

En Javascript, interceptar el envío del formulario, rellenar un segundo formulario con campos ocultos solamente con los valores que desea, y enviar esa forma en su lugar.

Otros consejos

Esto es lo que el atributo target es para. Ponerlo en "_blank" para abrir una nueva ventana. Si desea que su margen de beneficio sea válido (lo que es el punto? Os aseguro que sus usuarios podrían cuidar menos sobre la validez de su margen de beneficio!), A continuación, utilizar Javascript para establecer el objetivo al cargar la página ...

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

No hay otra manera.

Para hacer referencia a la parte superior de la página actual y salir de cualquier conjunto de marcos actualmente en uso se usaría <a href="page.htm" target="_top"> en HTML. En Javascript que utilice:

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

Para hacer referencia a la página actual o el marco puede utilizar <a href="page.htm" target="_self"> en HTML. En Javascript que utilice:

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

Para orientar el marco padre puede utilizar <a href="page.htm" target="_parent"> en HTML. En Javascript que utilice:

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

Para hacer referencia a un marco específico dentro de un conjunto de marcos puede utilizar <a href="page.htm" target="thatframe"> en HTML. En Javascript que utilice:

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

Para hacer referencia a un marco flotante específico dentro de la página actual se puede utilizar <a href="page.htm" target="thatframe"> en HTML. En Javascript que utilice:

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

El target atributo del elemento <form> es válido en XHTML 1.0 transición ..

Si está utilizando XHTML 1.1 o 1.0 Strict entonces el <iframe> no es una etiqueta válida en el primer lugar ..

Se puede usar Javascript window.open para "pop" la nueva ventana y usar GET parámetros en la URL para pasar argumentos ... Pero la OMI es peor que con el atributo de destino en el tipo de documento de transición.

La mejor manera de hacerlo es un "falso" nueva ventana que se crea sobre la marcha en el DOM y rellena sí mediante llamadas AJAX. De esta manera usted no "romper" la experiencia del usuario (mediante la apertura de una nueva ventana).

Si establece algún campo oculto en la página que se abre la nueva ventana (llámese EntryIDs) antes de abrir una nueva ventana desde la página de llamada, se puede hacer referencia a ella en la página abierta de esta manera:

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

La desventaja aquí es que ahora está a la izquierda para mostrar los detalles de la entrada a través de JavaScript también. No hay necesidad de hacer un post forma en absoluto.

Si usted está sintiendo juguetón siempre se puede configurar los identificadores de entrada en un (llamada a través de un servicio web) session o la cookie en la página de apertura antes de abrir la nueva ventana, y apoderarse de la sesión en la página abierta para que pueda construir la página de impresión en el lado del servidor en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top