2012-12-20 10 views
6

Używam window.open, aby otworzyć okno potomne z okna nadrzędnego. Chcę, aby okno podrzędne pozostało na górze, aby użytkownik mógł się do niego odnieść podczas wprowadzania wpisu w oknie nadrzędnym. Czy można to zrobić? Używam Firefoksa w tej chwili, ale byłby to bonus, gdyby działał we wszystkich przeglądarkach.Jak sprawić, by okno dziecięce pozostało na wierzchu?

+0

Możesz ustawić ostrość w nowym oknie, ale wtedy nie będziesz mógł wpisywać ani nic robić w oknie nadrzędnym. –

+3

Co powiesz na użycie [popup div] (http://jqueryui.com/dialog/#default) zamiast otwierania nowego okna? – 3dgoo

+1

Jest to najlepsze, co możesz zrobić z oknami: http://jsfiddle.net/DerekL/WFsyY/ –

Odpowiedz

1

Jak o użyciu popup div zamiast otwarcia nowe okno?

+1

BOOM! Nailed It. –

+2

Problem polega na tym, że nie można przenieść wyskakującego okienka HTML poza okno nadrzędne. – UrbKr

1

Ta warstwa wyskakujących okienek jest również dobra: DOMWindowDemo.

+0

http://stackoverflow.com/questions/how-to-answer –

+0

Zamierzam dać +1, ponieważ wiem, że kiedyś się przyda, chociaż żaden z nich nie jest tym, co miałem na myśli w tym zadaniu. –

0

tak można to zrobić przez ten kod trzeba dać onblur = „self.focus()” w organizmie przez okna potomnego

//Parent page... 
    <html> 
     <body> 
     <a href="#" onClick="window.open('two.html','sdvwsv','width=200,height=200');">here...</a> 
     </body> 
    </html> 


    //Child page... 
     <html> 
      <body onBlur="self.focus();"> 
       here... 
       </body> 
      </html> 
+0

Wygląda na to, że nie działa tak, jak się spodziewałem, kiedy kliknę z powrotem na okno nadrzędne, okno potomne zostanie utracone. –

+0

Problem polega na tym, że pisanie treści od dziecka do rodzica jest wystarczające, a gdy nie ma rodzica, nie istnieje żadne dziecko. –

0
<html> 
    <script language="JavaScript"> 
    <!-- 
    function openWin(){ 
     var myBars = 'directories=no,location=no,menubar=no,status=no'; 

     myBars += ',titlebar=no,toolbar=no'; 
     var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no,top=10, left=10,'; 
     var myFeatures = myBars + ',' + myOptions; 
     var myReadme = 'This is a test.' 

     var newWin = open('', 'myDoc', myFeatures); 

     newWin.document.writeln('<form>'); 
     newWin.document.writeln('<table>'); 
     newWin.document.writeln('<tr valign=TOP><td>'); 
     newWin.document.writeln('<textarea cols=45 rows=7 wrap=SOFT>'); 
     newWin.document.writeln(myReadme + '</textarea>'); 
     newWin.document.writeln('</td></tr>'); 
     newWin.document.writeln('<tr><td>'); 
     newWin.document.writeln('<input type=BUTTON value="Close"'); 
     newWin.document.writeln(' onClick="window.close()">'); 
     newWin.document.writeln('</td></tr>'); 
     newWin.document.writeln('</table></form>'); 
     newWin.document.close(); 
     newWin.focus(); 
    } 
    --> 
    </script> 
    <body> 
    <form> 
     <b>Click the following button to open a new window: </b> 
     <input type=BUTTON value="Open" onClick='openWin()'> 
    </form> 
    </body> 
+0

Dziękuję za odpowiedź, ale nie o to chodziło. Spowoduje to utworzenie nowego okna z polem tekstowym, ale nadal zostanie utracone po kliknięciu w oknie nadrzędnym. Chcę, aby okno podrzędne pozostało na górze, aby użytkownik mógł się do niego odnieść podczas wprowadzania wpisu w oknie nadrzędnym. –

0
<html> 
    <script language="JavaScript"> 
    <!-- 
    function openWin(){ 
     var myBars = 'directories=no,location=no,menubar=no,status=no'; 
     myBars += ',titlebar=no,toolbar=no'; 
     var myOptions = 'scrollbars=no,width=600,height=400,resizeable=no,top=10, left=10'; 
     var myFeatures = myBars + ',' + myOptions; 
     var newWin = open('test.html', '', myFeatures); 
     newWin.document.close(); 
     newWin.focus(); 
    } 
    --> 
    </script> 
    <body> 
    <form> 
     <b>Click the following button to open a new window: </b> 
     <input type=BUTTON value="Open" onClick='openWin()'> 
    </form> 
    </body> 
</html> 
    </html> 
+0

Dziękuję, ale nie jestem pewien, czy rozumiesz, czego chcę. "Chcę, aby okno podrzędne pozostało na górze, aby użytkownik mógł się do niego odnieść podczas wprowadzania wpisu w oknie nadrzędnym." –

0

Walczyłem z tym przez długi czas. Wygląda na to, że jest to błąd w FF, ale zauważyłem, że po otwarciu nowego okna, jeśli go kliknę, to się skupi i osiągnie szczyt. Jednak wywołanie window.focus() na nim nie działało, więc domyślam się, że dzieje się to zbyt wcześnie.

Więc w nowym oknie kodu, na dole strony dodałem

setTimeout(function(){window.focus()},100); 

To nie ma ochoty stałej praktyki, ale jeśli jest to potrzebne do pracy ... 100 ms wydaje się być najniższy, który działa w moim systemie.

+0

Wygląda na to, że działa on tylko wtedy, gdy żądanie open() jest wykonane z niewidocznej obsługi zdarzenia. Ponadto, program obsługi zdarzeń musi znajdować się na obiekcie, który sam może zaakceptować fokus, na przykład elementy wejściowe itp. –

+0

Nawet jeśli dołączysz elementy do zdarzeń typu div, nie mogą zaakceptować fokusu, więc powyższe elementy nie będą działać na nich. –

Powiązane problemy