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


Автор: Гриша 2.1.2006, 18:37
Здравствуйте. Подскажите пожалуйста.
Я хочу сделать так, чтобы была ссылка вида <a href="url" onclick="функция открывающая ссылку в новом окне с указанными параметрами">

У меня есть два кода, один очень хороший окрывает ссылку в новом окне, но ссылка имеет вид <a href="javascrip:na_open_window">, и есть второй код он открывает ссылку в новом окне и имеет вид <a href="url" onclick="window.open">.
Я хочу сделать так, чтобы функция na_open_window в первом коде, вызывалась как функция window.open во втором коде, помогите пожалуйста совместить:

Первый код, где <a href="javascript:na_open_window(...
Код

<script language="JavaScript">
<!--
function na_open_window(name, url, left, top, width, height, toolbar, menubar, statusbar, scrollbar, resizable)
{
  toolbar_str = toolbar ? 'yes' : 'no';
  menubar_str = menubar ? 'yes' : 'no';
  statusbar_str = statusbar ? 'yes' : 'no';
  scrollbar_str = scrollbar ? 'yes' : 'no';
  resizable_str = resizable ? 'yes' : 'no';
  window.open(url, name, 'left='+left+',top='+top+',width='+width+',height='+height+',toolbar='+toolbar_str+',menubar='+menubar_str+',status='+statusbar_str+',scrollbars='+scrollbar_str+',resizable='+resizable_str);
}

// -->
</script>


Код

<a href="javascript:na_open_window('win', 'index.php', 0, 20, 455, 400, 0, 0, 0, 1, 1)" target="_self">Ссылка</a>



Второй код, где <a href="http://..." onclick=window.open"
Код

<a href="index.php" onclick="window.open ('','list', 'toolbar=no,directories=no,menubar=no,scrollbars=yes,resizable=no,width=650,height=700')" target=list>Ссылка</a>

Автор: Гриша 2.1.2006, 19:03
У меня получилось, незнаю только на сколько это корректно. Я изменил Html код в первом коде:
Код

<a href="index.php" onclick="na_open_window('win', 'index.php', 0, 20, 455, 400, 0, 0, 0, 1, 1)" target="win">Ссылка</a>

и я думаю в target здесь нужны ковычки, или нет в данном варинте target="win"

В мтоге я могу сделать без url в функции:
Код

<a href="index.php" onclick="na_open_window('win', '', 0, 20, 455, 400, 0, 0, 0, 1, 1)" target="win">Ссылка</a>


Автор: Гриша 2.1.2006, 19:20
smile Я надеюсь на то, что данный вариант октрытия нового окна корректен, я попробовал его в opera работат, незнаю как в Navigator.
Напишите пожалуйста ваши сооброжения, если срипт недопустим для использования, просто я знаю, чтобы бывает так что вроде все работате, а в итоге получается, что все было неправильно и работало например только у меня.

Автор: Гриша 9.1.2006, 00:07
Вот проблема появилась. Помогите пожалуйста. А тоя пока это не сделаю не могу другое делать, а столько еще работы.

Данная функция работате правильно в броузерах IE, Netscape (Mozilla), Opera.
Но данная функция работате неправильно на моем хостинге (agava) при использовании IE: окно открывается с разрешенным параметром строка состояния (как-будто я задал такие параметры na_open_window('win', 'index.php', 0, 20, 455, 400, 0, 0, 1, 1, 1)) и в строке заголовка страницы он отображает не тоолько содержимое тэга <title> но и сначала отображает адрес моего домена (к примеру http://forum.vingrad.ru/) - я непонимаю, что это такое, меня это просто бесит.
Помогите пожалуйста решить проблему.

И главное у меня на localhost все работате правильно.

Автор: Sardar 9.1.2006, 16:05
Гриша правильно что создал новую тему, там же и ответ.

По поводу кода, target оберни в ковычки, вообще всегда все аттрибуты оборачивай в кавычки и желательно в двойные, тогда, глядя на твою вёрстку, не будет лишний раз плохим словом поминать тебя програмист движка сайта smile

В остальном всё правильно, ну разве только что ты не учёл глупых баннерорезалок, что не всегда пропускают window.open. Xотя по идее в ссылке пропускать должны все.

Автор: Гриша 10.1.2006, 15:15
Sardar, спасиюбо большое за помощь вам, за пояснения, ответ в новой теме уже прочитал (успокоился) smile .

Я щас с форумом phpBB вожусь, изменяю дизайн и некоторые детали, так вот там я увидел похожий код открытия нового окна, за исключение, того что в конце они использую return false; и имя окна делают например "_win",
<a href="index.php" onclick="na_open_window('_win', 'index.php', 0, 20, 455, 400, 0, 0, 0, 1, 1);return false;" target="_win">Ссылка</a>
Это более корректный код или вобщем-то то же самое?

И брать в ковычки target вы имеете в виду так: "target="win" " - я посмотрел, код работает, да и мой визуальный редактор его допускает (удобней чем блокнот, хотя полностью не заменит никогда). Т.е. в кавычки выделяют те части кода, которые можно сказать придумали или узнали сами, как дополнительный прибабах?

По поводу баннерорезалок, я тоже надеюсь, что с href="index.php" он откроет окно.

================================================================
А вы не замечаете, что в форме быстрого ответа, в меню слева, кнопка цитата, не видна, а при наведении видна, но видна та кнопка, которая как я понимаю должна стоять не при наведении (зеленая).
Вдруг вы этого не заметили, на всякий случай написал.

Автор: Sardar 10.1.2006, 17:33
Имя окну можно дать любое, но все специальные имена начинаються с подчёркивания. Смотрим на аргументы http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/open_0.asp, видим что спец. имени "_new" нет, значит браузер примет это как обычное имя, следовательно это хуже для читаемости кода. Используй просто "win" или любое другое имя, будет лучше.

return false нужен что бы ссылка не сделала переход. Заметь ты не всегда указываешь url, что нужно открыть в window.open, разберём что вообще происходит по шагам:
  • клик по ссылке, событие onclick бежит от ссылки к document (все кроме IE поддерживают W3C DOM Event модель, потому событие зарождаеться от document - capturing mode к ссылке, затем от ссылки назад к document - bubbling mode)
  • браузер интересует только возвращаемое значение от onclick у ссылки, если это true или undefined (не было return инструкции), то переход по ссылке будет, иначе переход отменяеться.
  • глянув на target аттрибут ссылки (по дефолут _self) браузер ищет окно с этим именем если имя не являеться зарезервированым. Если найдёт окно, открытое ранее с этого домена, то в него и грузиться ссылка, иначе открываеться новое окно. Если имя зарезервировано, то берём соотвествующее окно от текущего фрейма, например _parent - родительский фрейм.
  • если переход разрешаеться (из onclick вернулось true или ничего), то грузим в выбраное окно ссылку из href
Отсюда врубаемся почему открыв окно без ссылки, но с именем идеентичным target ссылки и из onclick ничего не вернулось или true, то мы загрузим ссылку в новом окне. Если вернуть false, то будет открываться пустое окно, перехода не будет. Если же в открытии окна указать url, что и в href, то откроем окно с сылкой, если вернуть не false, то открытое окно будет дважды перезагружено smile

target это аттрибут, "брать в кавычки" имел в виду брать содержимое в кавычки, пример: target="_top"


Цитата(Гриша @ 10.1.2006, 14:15 Найти цитируемый пост)
А вы не замечаете, что в форме быстрого ответа, в меню слева, кнопка цитата, не видна

Нет, всё есть, попробуй ctrl+F5

Автор: Гриша 11.1.2006, 01:33
Sardar, спасибо огромное за такое пояснение. Щас прочитал, вообще ничего не понял, потому что запарился уже. Завтра почитаю, все пойму.

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