Pergunta

O que?Eu gostaria de poder fazer uma solicitação de postagem (não precisa ser dados de formulário) para uma nova janela sem usar o atributo de destino (validação XHTML).

Por quê?Eu tenho um WebApp (usando jQuery), onde o usuário seleciona várias entradas para imprimir. Cada ID de entrada deve ser enviado para uma página de processamento que exibirá uma versão imprimível dos prontos. Não quero direcionar o usuário para longe do WebApp para imprimir e não posso usar o GET em um pop -up, porque o número de IDs de entrada pode se tornar muito grande para caber em um URL.

Pesquisei no Google e li vários fóruns e a maioria das pessoas parece sugerir o atributo de destino diretamente ou inseri -lo usando JavaScript. Eu esperava evitar essas duas soluções.

Isso é possível e, em caso afirmativo, como?

Desde já, obrigado :)

Foi útil?

Solução

Em JavaScript, intercepte o envio do formulário, preencha um segundo formulário com apenas campos ocultos com os valores desejados e envie esse formulário.

Outras dicas

Isso é o que o target atributo é para. Defina -o como "_blank" para abrir uma nova janela. Se você deseja que sua marcação seja válida (qual é o sentido? Garanto -lhe que seus usuários podem se importar menos com a validade da sua marcação!), Use JavaScript para definir o destino na página Carregar ...

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

Não há outro caminho.

Para atingir o topo da página atual e sair de qualquer quadro atualmente em uso, você usaria <a href="page.htm" target="_top"> em html. Em JavaScript que você usa:

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

Para atingir a página ou quadro atual que você pode usar <a href="page.htm" target="_self"> em html. Em JavaScript que você usa:

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

Para atingir o quadro pai que você pode usar <a href="page.htm" target="_parent"> em html. Em JavaScript que você usa:

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

Para atingir um quadro específico dentro de um quadro que você pode usar <a href="page.htm" target="thatframe"> em html. Em JavaScript que você usa:

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

Para segmentar um iframe específico na página atual, você pode usar <a href="page.htm" target="thatframe"> em html. Em JavaScript que você usa:

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

O atributo target do <form> O elemento é válido no XHTML 1.0 transitório..

Se você estiver usando xhtml 1.1 ou 1.0 rigoroso, então o <iframe> não é uma tag válida em primeiro lugar ..

Você pode usar o JavaScript Window.ope para "pop" a nova janela e usar parâmetros Get no URL para passar argumentos ... mas IMO é pior do que usar o atributo de destino no Doctype de transição.

A melhor maneira de fazer isso é uma nova janela "falsa" criada em tempo real no DOM e se preenche pelas chamadas do Ajax. Dessa forma, você não "quebra" a experiência do usuário (abrindo uma nova janela).

Se você definir algum campo oculto na página que abre a nova janela (ligue para a entrada de entrada) antes de abrir uma nova janela na página de chamada, você pode fazer referência na página aberta como assim:

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

A desvantagem aqui é que agora você também foi deixado para exibir seus detalhes de entrada via JavaScript. Não há necessidade de fazer uma postagem de formulário.

Se você estiver se sentindo brincalhão, sempre pode definir os IDs de entrada em uma sessão ou cookie (através de uma chamada de serviço da web) na página de abertura antes de abrir a nova janela e pegar a sessão na página aberta para que você possa construir o Imprima a página do lado do servidor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top