Jump to content
  • 0

window.open. Туплю.


Verder
 Share

Question

Имеем элементарную функцию:

function winop()
{
winop = window.open("example.html","mywin","height=600,width=550,left=400,top=100");
}

В html следующее:

<a href="java script:winop();">Open window</a>

В результате все прекрасно открывается но только один раз, если щелкнуть по линку во второй раз, то хрен вам, не открывает окно. Только после reload страницы.

Короче туплю и не пойму в чем дело. Что-то забыл.

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0
Второй параметр функции - имя окна. Если оно уже есть, то новое не открывается. Оставь "".

Не помогает :)

И убирал имя, и разные давал окнам - все равно, если еще раз кликнуть по ссылке без релоада окна браузера окно не открывается заново.

Бред.

Link to comment
Share on other sites

  • 0

function winop()
{
winop = window.open("example.html","mywin","height=600,width=550,left=400,top=100");
}

название совпадают

после того как 1 раз отработает функция - виноп станет ссылкой на окно а не на функцию

и само собой второй не сработает вызов функции

Link to comment
Share on other sites

  • 0
function winop()
{
winop = window.open("example.html","mywin","height=600,width=550,left=400,top=100");
}

название совпадают

после того как 1 раз отработает функция - виноп станет ссылкой на окно а не на функцию

и само собой второй не сработает вызов функции

Это я понимаю.

Но в конкретном случае имеется 3 окна

Они вызываются, например, так:

function winop()
{
winop = window.open("example.html","mywin1","height=600,width=550,left=400,top=100");
}

function winop2()
{
winop2 = window.open("example2.html","mywin2","height=600,width=550,left=400,top=100");
}

function winop3()
{
winop3 = window.open("example3.html","mywin3","height=600,width=550,left=400,top=100");
}

Никаких совпадений, если ты об этом.

Или я еще сильнее туплю.

Edited by Verder
Link to comment
Share on other sites

  • 0
Никаких совпадений, если ты об этом.

Или я еще сильнее туплю.

а я вот даже 3 совпадения вижу

Смени названия открытых окон.

function winop()
{
win1 = window.open("example.html","mywin1","height=600,width=550,left=400,top=100");
}

function winop2()
{
win2 = window.open("example2.html","mywin2","height=600,width=550,left=400,top=100");
}

function winop3()
{
win3 = window.open("example3.html","mywin3","height=600,width=550,left=400,top=100");
}

и все заработает

в JS не может одно и тоже имя ссылать на 2 сущности. В данном случае на окно и фукцнию

Link to comment
Share on other sites

  • 0
Лучше поставить var, если эти переменные не используются как глобальные.

Слушай, а var - это получается объявление глобальной переменной, типа как глобальная переменная в php GET или POST?

Edited by rus
Link to comment
Share on other sites

  • 0
Без var - это объявление глобальной.

В очередной раз убеждаюсь что js в изучении сложнее и замороченее чем php, прочитал и ничего не понял:

Область видимости переменной - текущая функция. Если переменная объявлена вне функции, то ее область видимости - глобальный объект window.

Здесь javascript похож на традиционные языки программирования
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
var a = 5
function go() {
var a = 6
}
go() // значение внешней переменной a не меняется

Link to comment
Share on other sites

  • 0

А что не понятно? Да в php области видимости переменных немного иначе распределены, а в JS как раз проще... Переменные, объявленные в функции только там и работают, даже если они по имени совпадают с глобальными, они не влияют на глобальные. А глобальные используются в функциях безо всяких доп. объявлений.

Link to comment
Share on other sites

  • 0

А ещё с объявлением var в теле функции они называются "Локальными" и они видны только из тела функции+умирают когда функция заканчивает своё действие, но если дело не касается замыканий :)

Вроде-бы так, может ошибаюсь, поправьте, если что...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy