1. O que é modaldialog?
ShowModaldialog é um método de objeto JSWindow.
A diferença é: depois que o showModaldialog é aberto, a janela dos pais não pode obter o foco (ou seja, não pode ser operado).
Você pode definir o valor da janela.returnValue na sub -duas, para que a janela dos pais possa obter esse retorno.
2. Um exemplo
1) main.html na janela principal,
2) Abra o sub -Window Sub.html na janela principal via ShowModaldialog
3) Defina o ReturnValue no sub -duas e retorne à janela principal para usar
main.html
Copie o código do código da seguinte forma:
<html>
<head>
<Medaname = "generator" content = "Oscar999">
</head>
<Cript>
FunctionShowModal ()
{{
Varret = window.showmodaldialog ("sub.html? temp ="+math.random ());
Alerta ("subreturnValueis"+ret);
}
</script>
<Body>
<InputId = button1Type = buttonVerv.
</Body>
</html>
Sub.html
Copie o código do código da seguinte forma:
<html>
<head>
<Medaname = "generator" content = "Oscar999">
</head>
<Cript>
FunctionrenTurnMain ()
{{
window.returnValue = "returnFromsub";
window.close ();
}
</script>
<Body>
<InputId = button1Type = buttonVerv.
</Body>
</html>
Explicação Especial: Quando o método do showModaldialog em main.html, o objetivo de usar Math.Random () é evitar o cache.
3.ShowModaldialog em detalhes
vRETURNVALUE = Window.showModaldialog (SURL [, Vargudes] [, SFeatures])))))
Surl
Parâmetros deve -CHOose, tipo: string. URL usado para especificar o documento a ser exibido na caixa de diálogo.
Vargudes
Parâmetros opcionais, tipo: variante. Usado para passar os parâmetros para a caixa de diálogo. O tipo de parâmetro passado não é limitado, incluindo matriz, etc. A caixa de diálogo obtém parâmetros passados através do Windows.Dialogarguments.
SFEATURES
Parâmetros opcionais, tipo: string. Usado para descrever a aparência e outras informações da caixa de diálogo, você pode usar um ou mais abaixo e usar o segmento ";" para se separar.
A altura da caixa de diálogo de diálogo, não menos que 100px, diálogo e largura de diálogo no IE4 são EM, e o IE5 é PX.
Largura de diálogo: Largura da caixa de diálogo.
DIALOGLEFT: Distância da esquerda da área de trabalho.
Dialogtop: Distância da área de trabalho.
Centro: {sim |
Ajuda: {sim |
Redicável: {sim | O padrão não.
Status: {sim | O padrão é sim [modalless] ou não [modal].
Scroll: {sim | O padrão é sim.
Existem vários atributos usados no HTA, que geralmente não são usados nas páginas da Web em geral.
diálogo: {sim | O padrão é não.
Edge: {afundado |. O padrão é aumentado.
Não adorado: {sim |
4. Compatibilidade do navegador
Mas nem todos os navegadores são compatíveis com esse uso.
Se você executar o exemplo acima no Chrome, a janela pai pode obter o foco à vontade.
A seguir, é apresentado o apoio dos navegadores convencionais nesse método.
Navegador | Se deve apoiar | estado |
Ie9 | ○ | |
Firefox13.0 | ○ | |
Safari5.1 | ○ | |
Chrome19.0 | × | Não é uma caixa de diálogo modal, mas o Open tem uma nova janela |
Opera12.0 | × | Tudo aconteceu, nem mesmo uma janela |
Se houver um parâmetro que seja introduzido no Vargudes na janela:
Copie o código do código da seguinte forma:
var return = window.showmodaldialog ("sub.html? temp ="+math.random (), janela);
Na sub -geração, o seguinte valor é:
Navegador | Diálogo modal | window.opner | Window.Dialogarguments | ReturnValue |
Ie9 | ○ | indefinido | [Janela do objeto] | ○ |
Firefox13.0 | ○ | [ObjectWindow] | [ObjectWindow] | ○ |
Safari5.1 | ○ | [ObjectWindow] | [ObjectWindow] | ○ |
Chrome19.0 | × | [ObjectWindow] | indefinido | × |
Observe que, sob o navegador Firefox, se a sub -duas for atualizada, Window.Dialogarguments ainda será perdido e não for definido. Nos resultados acima, podemos ver que o valor de retorno de retorno é que apenas o navegador Chrome retorna indefinidos e não há problemas com outros navegadores.
5. Como resolver a compatibilidade do Chrome.
A direção é: Set Window.opner.RETURNVALUE = "" "
main.html
Copie o código do código da seguinte forma:
<html>
<head>
<Meta name = "general" content = "Oscar999">
</head>
<Cript>
Função showModal ()
{{
var return = window.showmodaldialog ("sub.html? temp ="+math.random (), janela);
// para Chrome
if (ret == indefinido)
{{
Ret = window.returnValue;
}
Alerta ("Sub Valor de Retorno é"+Ret);
}
</script>
<Body>
<ID de entrada = Button1 Type = Button Value = "Abra Sub" Nome = Button1 OnClick = "ShowModal ();" >>
</Body>
</html>
Sub.html
Copie o código do código da seguinte forma:
<html>
<head>
<Meta name = "general" content = "Oscar999">
</head>
<Cript>
Função returnMain ()
{{
if (window.opner! = indefinido)
{{
Window.opner.RETURNVALUE = "Retorno de sub";
} Outro {
window.returnValue = "retornar de sub";
}
window.close ();
}
</script>
<Body>
<ID de entrada = botão1 tipo = Button Value = "Retorno e Fechar" Nome = Button1 OnClick = "ReturnMain ()">
</Body>
</html>
Isso é para determinar se certos objetos são definidos para distinguir navegadores. Obviamente, você também pode julgar o tipo de tipo de navegador
Isso é usado para usar o valor de retorno da janela dos pais.
Var OldValue = window.returnValue;
var newvalue = showModaldialog ()
Window.returnValue = OldValue
6. Deve -se notar que o teste no Chrome precisa colocar o arquivo HTML no servidor da Web (Tomcat, ...) para acessar o teste no URL HTTP. Caso contrário, não terá sucesso.