Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как открыть window.open без передачи ему фокуса?


Автор: Karadarg 24.12.2008, 11:25
При нажатии на ссылку
onClick="window.open('http://ya.ru');
отрывается новое окно, которое становится активным.
Как сделать что бы новое окно не было активном, открывалось "под сайтом", и пользователь остался на изначальной странице, пока сам не переключится на открытую страницу.

Пробовал следующий код:
Код

<script language="JavaScript">
function popunder(url) {
pu = window.open(url);
pu.blur();
window.focus();
}
</script>
 
<a href="#" onClick="popunder('http://ya.ru')">Яндекс</a>


Но новому окну также продолжает передаваться фокус. 

Автор: MisterCleric 24.12.2008, 12:25
Товарищи модераторы перенесите тему в JavaScript

Автор: bars80080 24.12.2008, 16:31
там ещё много параметров:

pu = window.open(url, 'secondName', 'width=500px;height=500px;scrollbars=yes');

и так далее. а вот чтобы оно всплывало на заднем плане...

Автор: Karadarg 24.12.2008, 18:22
Пробовал использовать alwaysRised z-lock не помогло 

pu = window.open(url, 'secondName', 'width=500px;height=500px;scrollbars=yes;alwaysRised;z-lock');

Как еще можно вернуть фокус изначальному окну или запретить передачу фокуса новому окну? 

Автор: ksnk 24.12.2008, 18:34
по ходу - никак smile Защита, однако... 
Код

script language="JavaScript">
function popunder(url) {
pu = window.open("");
window.focus();

//pu.document.writeln('<'+'iframe src="'+url+'"></iframe>');

pu.document.writeln('<'+'script>setTimeout(function(){document.location.replace("'+url+'")},1000);</'+'script>');
pu.document.close();
return false;
}
</script>
 
<a href="#" onClick="return popunder('http://ya.ru');">Яндекс</a>


Можно управлять только собственными окошками - с пустым Урлом. Вот такой код в IE показывает свое окно активным в течении таймаута, пока не заменится адрес ведомого окошка. После этого - ведомое окошко становится сверху... А Хрому и FF на window.focus, видимо, вообще наплевать...

Автор: mxt 24.12.2008, 19:48
есть мысль, только протестую

Автор: mxt 24.12.2008, 20:22
можно использовать settimeout, но все равно будет коряво, да и в ФФ focus() работает страно

Автор: Karadarg 25.12.2008, 21:50
Благодарю всех за помощь, к сожалению так и не удалось открыть новое окно с сохранением фокус.  Исходя из того что во многих браузерах по умолчанию новые окна открываются в новых вкладках, то и за этого  вернуть фокус не получает…

Посоветуйте как можно изменить код который предложил ksnk так что бы была задержка перед открытие нового окна, после клика по ссылки, но фокус не передавался как сейчас используя код ksnk.
То есть цель: кликаем по ссылки, а новое окно допустим открывается только через 2с, при этом в течении этих 2с остается фокус на первоначальной странице ?

Автор: bars80080 25.12.2008, 23:11
Код

<script language="JavaScript">
function popunder1(x) {
    setTimeout(function(){popunder(x);}, 2000);
    return false;
}
function popunder(url) {
pu = window.open("");
window.focus();

//pu.document.writeln('<'+'iframe src="'+url+'"></iframe>');

pu.document.writeln('<'+'script>setTimeout(function(){document.location.replace("'+url+'")},1000);</'+'script>');
pu.document.close();
return false;
}
</script>
 
<a href="#" onClick="return popunder1('http://ya.ru');">Яндекс</a>


Автор: Soah 20.2.2009, 20:19
извиняюсь, не до конца прочитал

Автор: barcelona 20.2.2012, 12:06
С 2009 года ничего не изменилось? У меня такая же проблема, нужно, чтобы фокус сохранялся на родительском окне...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)