Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вопрос по window.open (https://javascript.ru/forum/events/12123-vopros-po-window-open.html)

B.C.Rich 01.10.2010 16:42

Вопрос по window.open
 
Вот такой код:

<script type="text/javascript">

 document.onclick = function() {
 var x = window.open(
 'http://echo.msk.ru/',
 'new',
 'width=600px, height=20px'
 );
 x;
 }

</script>


По клику на странице открывается окно. При этом, если вынести определение переменной X из функции, то код не работает. В чем дело?

exec 01.10.2010 16:55

Это не определение, вы запускаете window.open по onclick. Если же просто прописать вызов window.open, то открытие окна будет невозможно из-за блокировки всплывающих окон.

B.C.Rich 01.10.2010 17:01

Я имел в виду если написать вот так:

<script type="text/javascript">

 var x = window.open(

 'http://echo.msk.ru/',
 'new',
 'width=600px, height=20px'
 );


 document.onclick = function() {

 x;
 }
</script>


Или так неправильно?

HelpeR 01.10.2010 17:24

document.onclick = function() {
    var x = window.open('http://echo.msk.ru/', 'new', 'width=600px, height=20px');
}

Вполне нормально работает!

HelpeR 01.10.2010 17:27

Цитата:

Сообщение от B.C.Rich (Сообщение 72712)
Я имел в виду если написать вот так:

<script type="text/javascript">

 var x = window.open(

 'http://echo.msk.ru/',
 'new',
 'width=600px, height=20px'
 );


 document.onclick = function() {

 x;
 }
</script>


Или так неправильно?

Конечно не правильно. Наверное вы хотите так
var x = function() {
    window.open();
}
document.onclick = x;

B.C.Rich 01.10.2010 17:33

Не совсем так. Я хочу создать две функции: одна открывает окно, вторая - закрывает по какому-либо другому событию.
Поэтому хотел вынести

var x = window.open(
'http://echo.msk.ru/',
'new',
'width=600px, height=20px'
);

за пределы функции. Но тогда функция не работает.

HelpeR 01.10.2010 17:36

var new_win;
var open = function() {
    new_win = window.open();
}
var cl = function() {
    new_win.close();
}
document.onclick = open;
obj.onclick = cl;

B.C.Rich 01.10.2010 17:52

Принцип понял, но не работает

var new_win;
var open = function() {
new_win = window.open('http://echo.msk.ru/','new','width=600px, height=20px');
}

var cl = function() {
new_win.close();
}

document.onclick = open;
document.onkeypress = cl;

HelpeR 01.10.2010 17:56

сори
var new_win;
var op = function() {
    new_win = window.open('http://echo.msk.ru/','new','width=600px, height=20px');
}

var cl = function() {
    new_win.close();
}

document.onclick = op; // слово open зарезервированное слово
document.onkeypress = cl;

B.C.Rich 01.10.2010 18:14

Спасибо! Теперь все работает:)


Часовой пояс GMT +3, время: 01:51.