2012-07-10 22 views
12

Chcę otworzyć okno na kliknięcie, ale chcę je otworzyć za bieżącym oknem lub gdy otworzy się nowe okno, powinno się zminimalizować. Zrobiłem funkcję, ale w rzeczywistości to nie zadziałało.Otwórz okno za bieżącym oknem, używając Javascript/jQuery

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script type="text/javascript"> 
function wn(){ 
    var mm=window.open('http://www.google.com','newwindow','width=200, height=200', "_blank"); 
} 
</script> 
</head> 
<body> 
<a href="#" onclick="wn()">click</a> 
</body> 
+3

Dźwięki niebezpiecznie jak te na kliknięcie, irytujące, wyskakujące reklamy ... – dda

+2

Google „popunder. " Zasadniczo robisz window.open, a następnie window.focus. –

+0

GGG: nie działa – Carlos

Odpowiedz

18

EDIT

okna nadrzędnego HTML

<script language="JavaScript" type="text/javascript"> 
function openPopUP() { 
    window.open('mywindow.html','NewWin', 
      'toolbar=no,status=no,width=350,height=135') 
} 
</script> 

<body onLoad="openPopUP();"> 
or 
<a href="javascript:openPopUP();">Click to open popup</a> 

Dziecko Okno tj PopUp okno File

Poniższy skrypt powinien być w oknie dziecko. Okno podrzędne otworzy się i będzie automatycznie ukrywane po 1 sekundzie. Wartość 1000 określona w metodzie setTimeout jest czasem trwania w milisekundach, dla których okno potomne będzie otwarte. Możesz zwiększyć ten czas oczekiwania, jeśli chcesz, aby okno podrzędne było dłużej otwarte.

<body onLoad="setTimeout('window.blur()', 1000);" 
      onFocus="setTimeout('window.blur()', 1000);"> 

To może pracować dla Ciebie: Dodaj ten wiersz kodu w przypadku onload swojego okna potomnego ...

window.parent.opener.focus(); 
+0

@amit - sprawdź moją zredagowaną odpowiedź, która pozwoli Ci osiągnąć to, czego chcesz .. . –

+1

nie działa. wyskakujące okienko otwiera się i nadal znajduje się w przedniej części okna nadrzędnego: – Carlos

+0

@amit - jego okienko wyskakujące w oknie i ukryj w ciągu 1 sekundy, że normalna natura to działa ... może nie być innego sposobu na zrobienie tego .. –

12
popunder = window.open('http://www.google.com','newwindow','width=200, height=200', "_blank"); 
popunder.blur(); 
window.focus(); 
+1

próbowałem to, ale nie działa – Carlos

+0

Nie jestem pewien, czy przeglądarki są zgodne z tą techniką, ale to NIE działa obecnie ani w FF, ani w Chrome. Popup pozostaje z przodu. – Brade

6

Spróbuj czegoś takiego.

window.open(url); 
self.focus(); 
+0

Nie działa :(. – poitroae

5

Chociaż to powoduje problemy z bezpieczeństwem, ale myślę, że jedna z okazji, aby zrobić to:

popup = window.open('http://www.google.com', 'newwindow', "_blank"); 
popup.blur(); 

ta działa tylko w IE. W przypadku innych przeglądarek musisz ustawić poziom zabezpieczeń na minimum.

3
popunder = window.open('your_site_url','newwindow','width=500, height=500', "_blank"); 
popunder.blur(); 
window.focus(); 

lub po prostu

window.open(url); self.focus(); 
2

Jeśli chcesz możliwości rzeczywistego popunder istnieje wielka jQuery plugin do obsługi go w https://github.com/hpbuniat/jquery-popunder

wykorzystuje kombinację różnych technik, aby osiągnąć go w różnych przeglądarkach . Nie wszystkie przeglądarki mogą obsłużyć to samo, ale wyniki są bardzo podobne.

Aktualny kompatybilność przeglądarka jest wymieniony jako

  • Mozilla Firefox 3-30
  • Google Chrome 10-35
  • Microsoft Internet Explorer 6-11 - MSIE 6-8 wymaga jquery 1.x
  • Apple Safari 5
1

Wreszcie, pracował dla mnie tylko w przeglądarce chrome.Dodaj ten kod w oknie parent:

<script type="text/javascript" language="javascript"> 
    function popWindow() 
    { 
    var popupo = window.open("popup.html", 'newwindow','toolbar=no,status=no,width=650,height=450', "_blank"); 
    popupo.moveTo(0, 0); 
    popunder.blur(); 
    window.focus(); 
    } 
</script> 

dodać ten kod w oknie dziecko zdarzenia onload ciała jako

<body onLoad="setTimeout('window.blur()', 1000);" onFocus="setTimeout('window.blur()', 1000);"> 
Powiązane problemy