open.window('url');

Cruiser

Новичок
open.window('url');

Есть ссылка такого вида:
PHP:
<a href="#" onclick="functionOpenWindow('url');">ссылка</a>
Проблема в том, что основное окно при клике на ссылке прокручивается вверх.
Как это обойти?
 

Доктор

Новичок
Аж 2 варианта:
1) <a href="#" onclick="functionOpenWindow('url'); rerurn false">ссылка</a>

2)<a href="javascript:functionOpenWindow('url');">ссылка</a>


Но вообще так делать не по понятиям. По понятиям делать так:

<a href="url" target=_blank onclick="functionOpenWindow('url'); rerurn false">ссылка</a>
 

Arthur

Good Member
Что такое функция functionOpenWindow ???
пакеж...
to Доктор target=_blank - лишнее для него
 

Доктор

Новичок
to Arthur

>>Что такое функция functionOpenWindow
А тебе есть разница? Да и по названию ясно.

>>target=_blank - лишнее для него
Почему? Оно никому не лишнее.

Да, и того: флеймить не стоит...
 

Polar

Guest
Дык ж в яваскрипте все лишнее ведет еще к более сильным глюкам :) И по моему лучше все-таки target=_blank убрать, а вместо rerurn false в таких случаях юзать void(0)
:)
 

Cruiser

Новичок
Все понятно.
А что делает void(0) не совсем.
Объясните, плиз, вкратце.
 

Arthur

Good Member
Автор оригинала: Доктор
to Arthur

>>Что такое функция functionOpenWindow
А тебе есть разница? Да и по названию ясно.
В обще-то я не флеймю.
Мне понятно, что эта функция открывает окно. А раз оно криво открывается, значит возможно дело в ней.
 

Polar

Guest
Hi !

Автор оригинала: Cruiser
Все понятно.
А что делает void(0) не совсем.
Объясните, плиз, вкратце.
Дык ж ведь по формальным правилам яваскрипта return используется исключительно внутри функций, а если хочется произвести какое-нибудь действие и ничего не вернуть, то для этого и нужен void. Например некоторые браузеры при непосредственном вызове функций типа window.open по ссылке, могут остановить загрузку недогруженной части страницы или вообще очистить родительское окошко и нарисовать там [object] (кто открывал окошко из флеша или апплетов, тот меня поймет :) В этих случаях return не спасает (и вообще непонятно как он туда попал :) и нужно говорить void(window.open(траляля)) или window.open(траляля); void(0); чтобы с родительским окошком ничего страшного не произошло :)
 

Cruiser

Новичок
Ясно.
Но мне просто window.open() не поможет.
У меня functionWindowOpen('url') открывает разные по размеру окна, в зависимости какой файл засунут в аргумент.
 

Доктор

Новичок
Arthur:
А раз оно криво открывается, значит возможно дело в ней.
А где было сказано, что окно открывается криво? А? Было сказано, что главное окно при этом прокручивается вверх. Кто хоть раз в жизни ставил у ссылок href="#", тот это знает, и вопросов тут никаких возникнуть не может.

Polar:
Дык ж в яваскрипте все лишнее ведет еще к более сильным глюкам И по моему лучше все-таки target=_blank убрать, а вместо rerurn false в таких случаях юзать void(0)
Впервые слышу, что атрибут target у ссылок относится к яваскриптам, а тем более, что ведет к "еще более сильным глюкам" (к более сильным чем когда?). Вообще, ты прав, имеет место еще один вариант:

<a href="javascript: void(0)" onclick="functionOpenWindow('url'); rerurn false">ссылка</a>

Он лучше, чем этот первый:
1) <a href="#" onclick="functionOpenWindow('url'); rerurn false">ссылка</a>
тем, что хоть окно не прокручивает, даже если JS отключен. Но уже ибыточней и хуже, чем второй
2)<a href="javascript: functionOpenWindow('url');">ссылка</a>

На самом деле правильный во всех отношениях только 3-й вариант:
<a href="url" target=_blank onclick="functionOpenWindow('url'); rerurn false">ссылка</a>
Он будет работать и с JS, и без него (открывая просто новое обычное окно для ссылки).
Возврат же false, да будет всем известно, нужен для того, чтобы ОТМЕНИТЬ СТАНДАРТНУЮ ОБРАБОТКУ щелчка по ссылке.
Вопросы?
 

Cruiser

Новичок
Доктор прав.
Третий вариант подходяще :) Я стараюсь делать альтернативные пути - без явы.

Тут другая проблема нарисовалась!
У меня одно меню с ссылками на аплетах сделано. Так вот выяснилось, что не на всех версиях IE 6 (особенно под вынь ХР) стоит эта виртуальная машина явы. У меня тоже ХР и IE6, и все работает.
Я пробовал применить вместо тэга applet тэг object, но странное дело,
PHP:
<object codetype="application/java" classid="java:file.class">
не работает. Работает просто
PHP:
<object code="file.class">
Почему так?
Точнее первый вариант работает криво. Он ничего не выводит, совсем. Но и альтернативный текст тоже не показывает. Только если отключаю в браузере яву тогда текст виден.
 

Доктор

Новичок
Я лично тут помочь не могу... могу только буркнуть что-то вроде: ну кто же делает на страницах меню апплетами???
 
Сверху