2011-04-14 2 views
20

Voglio aprire una finestra popup e disabilitare la finestra genitore. Di seguito è riportato il codice che sto utilizzando;Javascript per aprire la finestra popup e disabilitare la finestra genitore

function popup() 
{ 

    popupWindow = window.open('child_page.html','name','width=200,height=200'); 
    popupWindow.focus(); 
} 

Per qualche motivo, la finestra padre non viene disabilitata. Ho bisogno di un po 'di codice aggiuntivo O che succede?

Ancora una volta, sto cercando qualcosa di simile a quello che otteniamo quando usiamo showModalDialog() .. i.e. non permette di selezionare la finestra genitore in all..Only cosa è che voglio ottenere la stessa cosa fatta utilizzando window.open

Inoltre si prega di suggerire il codice che sarà cross-browser compatibile ..

+0

cosa intendi per "disabilitare la finestra padre"? – atlavis

+0

Cosa intendi con "disattivato"? –

+0

Disabilita significherebbe non consentire all'utente di selezionare dire testo sulla finestra genitore .. infatti non gli consente di selezionare nulla sul genitore .. – testndtv

risposta

28
var popupWindow=null; 

function popup() 
{ 
    popupWindow = window.open('child_page.html','name','width=200,height=200'); 
} 

function parent_disable() { 
if(popupWindow && !popupWindow.closed) 
popupWindow.focus(); 
} 

e quindi dichiarare queste funzioni nel tag corpo della finestra padre

<body onFocus="parent_disable();" onclick="parent_disable();"> 

Come avete richiesto qui è il codice HTML completo della finestra padre

<html> 
<head> 
<script type="text/javascript"> 

var popupWindow=null; 

function child_open() 
{ 

popupWindow =window.open('new.jsp',"_blank","directories=no, status=no, menubar=no, scrollbars=yes, resizable=no,width=600, height=280,top=200,left=200"); 

} 
function parent_disable() { 
if(popupWindow && !popupWindow.closed) 
popupWindow.focus(); 
} 
</script> 
</head> 
<body onFocus="parent_disable();" onclick="parent_disable();"> 
    <a href="javascript:child_open()">Click me</a> 
</body>  
</html> 

Contenuto del nuovo .jsp sotto

<html> 
<body> 
I am child 
</body> 
</html> 
+0

Ho provato questo in IE..Ma mi permette di selezionare o giocare con la finestra genitore. – testndtv

+0

cosa intendi con puoi selezionare la finestra genitore, perché per me funziona bene. Non ti permetterà di eseguire alcuna azione sulla finestra genitore – anu

+0

Per me, posso eseguire un'azione sul genitore mentre il figlio è aperto. . Puoi copiare/incollare il codice HTML completo che hai .. – testndtv

2

Per le mie conoscenze, non è possibile disabilitare la finestra del browser.

Quello che puoi fare è creare un popup jQuery (o simile) e quando questo popup appare il tuo browser genitore sarà disabilitato.

Apre la pagina figlio in popup.

+0

Conosco il dialogo modale di jQuery..Ma non posso usarlo. .it è in realtà un div all'interno della stessa pagina .. – testndtv

+0

@hmthur - se non vuoi che sia nella stessa pagina allora puoi usare "iframe" all'interno di quel div e dare la pagina che vuoi vedere nell'attributo 'src' di 'iframe' – niksvp

1

Il termine chiave è la finestra di dialogo modale.

Come tale non è disponibile un dialogo modale integrato.

Ma è possibile utilizzare molti altri disponibili, ad es. this

1

Ecco come ho fatto finalmente! Puoi mettere uno strato (a grandezza naturale) sul tuo corpo con un alto indice z e, ovviamente nascosto. Lo renderai visibile quando la finestra è aperta, lo focalizzi sul clic sulla finestra genitore (il livello), e infine scomparirà quando la finestra aperta viene chiusa o inviata o qualsiasi altra cosa.

 .layer 
    { 
     position: fixed; 
     opacity: 0.7; 
     left: 0px; 
     top: 0px; 
     width: 100%; 
     height: 100%; 
     z-index: 999999; 
     background-color: #BEBEBE; 
     display: none; 
     cursor: not-allowed; 
    } 

e lo strato nel corpo:

   <div class="layout" id="layout"></div> 

funzione che apre la finestra pop-up:

var new_window; 
    function winOpen(){ 
     $(".layer").show(); 
     new_window=window.open(srcurl,'','height=750,width=700,left=300,top=200'); 
    } 

mantenendo nuova finestra focalizzata:

  $(document).ready(function(){ 
      $(".layout").click(function(e) { 
       new_window.focus(); 
      } 
     }); 

e in aperto finestra:

function submit(){ 
     var doc = window.opener.document, 
     doc.getElementById("layer").style.display="none"; 
     window.close(); 
    } 

    window.onbeforeunload = function(){ 
     var doc = window.opener.document; 
     doc.getElementById("layout").style.display="none"; 
    } 

spero che aiuterebbe :-)

0

Hi la risposta che @anu postato è giusto, ma non lo completamente lavorare come richiesto.Apportando una leggera modifica alla funzione child_open(), funziona correttamente.

<html> 
<head> 
<script type="text/javascript"> 

var popupWindow=null; 

function child_open() 
{ 
if(popupWindow && !popupWindow.closed) 
    popupWindow.focus(); 
else 
    popupWindow =window.open('new.jsp',"_blank","directories=no, status=no, menubar=no, scrollbars=yes, resizable=no,width=600, height=280,top=200,left=200"); 

} 
function parent_disable() { 
    if(popupWindow && !popupWindow.closed) 
    popupWindow.focus(); 
} 
</script> 
</head> 
    <body onFocus="parent_disable();" onclick="parent_disable();"> 
    <a href="javascript:child_open()">Click me</a> 
    </body>  
</html>