2011-04-14 11 views
20

Chcę otworzyć okno wyskakujące i wyłączyć okno nadrzędne. Poniżej znajduje się kod, którego używam;Javascript, aby otworzyć okno wyskakujące i wyłączyć okno nadrzędne

function popup() 
{ 

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

Z jakiegoś powodu okno główne nie zostanie wyłączone. Czy potrzebuję dodatkowego kodu LUB W jaki sposób?

Ponownie, szukam czegoś podobnego do tego, co otrzymujemy, gdy używamy showModalDialog() .. ie. to nie pozwala, aby wybrać okno nadrzędne w all..Only rzeczą jest to, że chcą dostać to samo zrobić za pomocą window.open

Także proszę sugerować kodu, które będą kompatybilne z różnymi przeglądarkami ..

+0

co masz na myśli przez "wyłączenie okna nadrzędnego"? – atlavis

+0

Co masz na myśli? –

+0

Wyłączenie oznaczałoby uniemożliwienie użytkownikowi wybrania napisu w oknie nadrzędnym .. w rzeczywistości nie pozwala mu wybrać niczego na rodzicu .. – testndtv

Odpowiedz

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(); 
} 

a następnie zadeklarować tych funkcji w znaczniku body okna nadrzędnego

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

Jak żądanej tu jest kompletny kod HTML z okna nadrzędnego

<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> 

Content od nowa .jsp poniżej

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

Próbowałem to w IE..Ale pozwala mi wybrać lub odtwarzać z okna nadrzędnego. – testndtv

+0

co masz na myśli, możesz wybrać okno nadrzędne, ponieważ dla mnie działa poprawnie. Nie pozwoli ci wykonać żadnej akcji w oknie nadrzędnym. – anu

+0

Dla mnie mogę wykonać akcję na rodzicu, gdy dziecko jest otwarte. .Możesz skopiować/wkleić kod HTML, który posiadasz. – testndtv

2

Aby według mojej wiedzy, nie można wyłączyć okna przeglądarki.

Co można zrobić, to utworzyć okienko wyskakujące o nazwie jQuery (lub podobnego rodzaju), a po wyświetleniu tego okienka przeglądarka macierzysta zostanie wyłączona.

Otwórz stronę podrzędną w wyskakującym okienku.

+0

Znam modalne okno dialogowe jQuery ... Ale nie mogę tego użyć. .it jest w rzeczywistości divem na tej samej stronie. – testndtv

+0

@hmthur - jeśli nie chcesz, aby była na tej samej stronie, możesz użyć 'iframe' w tym div i podać stronę, którą chcesz zobaczyć w atrybucie' src' 'iframe' – niksvp

1

Kluczowym terminem jest dialog modalny.

Jako takie nie ma wbudowanego modalnego dialogu.

Ale możesz użyć wielu innych dostępnych np. this

1

Tak to zrobiłem! Możesz umieścić warstwę (pełnowymiarową) na ciele z wysokim indeksem Z i oczywiście ukrytym. Sprawisz, że będzie widoczny, gdy okno będzie otwarte, skupi się na kliknięciu nad oknem nadrzędnym (warstwą), a na końcu zniknie, gdy otwarte okno zostanie zamknięte lub przesłane.

 .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; 
    } 

i warstwa w organizmie:

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

funkcji, która otwiera okienko:

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

utrzymaniem nowe okno koncentruje:

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

iw otwartym okno:

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"; 
    } 

Mam nadzieję, że to pomoże :-)

0

Hi odpowiedź że @anu pisał ma rację, ale to przyzwyczajenie całkowicie działa jako wymagane.Dokonując niewielkiej zmiany na child_open() funkcja działa poprawnie.

<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> 
Powiązane problemy