| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > window.close() - проблемы в разных броузерах |
| Автор: Гриша 4.1.2006, 21:40 |
| Здравствуйте. Делаю такую ссылку: <a href="vingrad.ru" onclick="window.close" target="_blank">Ссылка</a> Что я ожидал от этой ссылки: то что, при нажатии на нее откроектся новое окно, с указанным url, а старое закроется. В Explorer все так и работает. Но в дремучем Opera (2005 год) просто зарывается окно, я это броузер терпеть немогу, с ним всегда геморой, он работатет на своей волне. Подскажите возможное решени этой проблемы. // Netscape работает как opera, только что проверил. Что я неверно сделал код? |
| Автор: Innuendo 4.1.2006, 22:42 |
| у мен в эксплорере твой код не работает.... ну и в Мозилле тоже.. в ИЕ работает при таком: onclick="window.close()", но выходит табличка с запросом на закрытии окна... а в Мозилле нету и такого... есть ещё какие-то методы закрытия.. надо искать... |
| Автор: Гриша 5.1.2006, 11:58 |
| Innuendo, спасибо за ответ. Сначала при помощи javascript я открываю новое окно, и как раз при помощи это кода <a href="vingrad.ru" onclick="window.close" target="_blank">Ссылка</a> я закрываю такое окно. Такие окна закрываются без предупреждения. Эта функция стандартная. Netscape (Mozilla) и Opera, окна то закрываются, но вот ссылка не открывается. Ведь я хочу чтобы открылось новое окно, а строе закрылось. Как же это сделать? |
| Автор: Innuendo 5.1.2006, 13:02 |
| странно, запустил твой код: окна нигде не закрываются.... и ссылка открывается |
| Автор: Illuminaty 5.1.2006, 13:07 |
| Что то я видимо совсем после праздников опух.... Не понимаю, если тебе надо закрыть старую страницу (на которой находится ссылка) и открыть новую, то зачем писать такой код? Разве при активации ссылки тоже самое не происходит? Т.е. новая страница перекрывает старую... Не понимаю... |
| Автор: Innuendo 5.1.2006, 13:16 |
| точно..в данном случае открывается новое окно, и он хочет закрыть старое... а если убрать target="_blank", то ссылка просто откроется в этом окне... что ещё надо? |
| Автор: Гриша 5.1.2006, 15:46 |
| Спасибо всем за ответы. Во первых код я пишу немного неправильно, забыл скобки: <a href="http://vingrad.ru" onclick="window.close()" target="_blank">Ссылка</a> Во вторых я открываю окно при помощи javascript размеров 400x500, с параметрами: полоса прокрутки и изменение размера. При нажатии на указанную ссылку я хочу чтобы октрылось новое окно (уже обычное окно), в котором буде октрыта страница сайта, допустим vingrad.ru, ну не буду же я открывать ее в окне где есть только полоса прокрутки и размер окна 400x500 пикселей. И я также хочу сделать так, чтобы при открытии нового окна старое окно размером 400x500 закрывалось. Вы теперь поняли то что я хочу сделать? Получается, что описанный выше код закрывает окно, но не отрывает новове во всех броузерах кроме IE. |
| Автор: Illuminaty 5.1.2006, 16:19 | ||
Попробуй так:
|
| Автор: Гриша 5.1.2006, 18:26 |
| Illuminaty, спасибо за код. Сейчас попробую. Только в Opera проблема ткакая, если в новом окне, октрытом при помощи javascript, нажать на такую ссылку <a href="http://vingrad.ru" onclick="window.close()" target="_blank">Ссылка</a>, то окно просто закроется. А если нажать на ссылку <a href="http://vingrad.ru" target="_blank">Ссылка</a>, то откроется новое окно нормально, а старое останется - так и должно быть. Так вот, я добавил window.close(), чтобы открывалось новое окно, а старое закрывалось (так работает только в IE) И еще мне нужно чтобы ссылка была прямая, т.е. <a href = "htt://vingrad.ru" .... >Ссылка</a>, я щас попробую что-то сделать в с вашим кодом. А вообще я в javascript знаю какие-то основы и все, никак немогу разобраться с этим языком, Ssi, Perl, PHP, Css - напного проще давались, наверное книги такие были. |
| Автор: Гриша 5.1.2006, 19:01 |
| Illuminaty, в OPERA и IE ваш код работате, а вот в Netscape, получается так, что он как бы открывается в этом же окне, только на весь экран (может быть новое окно такое - безразницы), и высота у окна больше экрана, я даже ниц не могу увидеть. ЧТо-то не то. Вот я так плохо знаю jvascript, что не могу додуматься написать код так, чтобы броузер понял, что после открытия нового окна, старое нужно закрыть, или закрыть это окно и открыть новое. |
| Автор: Гриша 5.1.2006, 20:14 |
| Ну вот я в итоге сделал так: <a href="javascript:window.close();window.open('http://vingrad.ru/');">Ссылка</a>, пратически тоже самое, что и у Illuminaty, данный вариант кода работает во всех 3 броузерах. Но мне нужна прямая ссылка. Я попытался сделать эту ссылку примерно так как описано в другой моей теме: http://forum.vingrad.ru/index.php?showtopic=76595 - не получилось. И кстати мне несовсем понятно почему, ведь там как раз я и сделал код открытия прямой ссылки в новом окне, а пытаясь соединить с кодом в данной теме, получается что ссылка как бы октрывается в текущем окне и потом, закрывается (по условию кода уже). ============================== Я вот такой вариантик придумал хитрый: <a href="http://vingrad.ru/" onclick="window.close();window.open('http://vingrad.ru/');">Ссылка</a> - как видите, здесь на самом деле неважно, что мы укажем в href="...", получается, что данный скрипт окрывает ссылку по указанному адресу href="http://vingrad.ru/" в текущем окне, потом сразу же закрывает это окно window.close() и открывает новое окно по указанному адресу window.open('http://vingrad.ru/'); И конечно я сделал так, что если пользователь попадает на страницу, которая открываетя уменя в новом окне, не по ссылке с моего сата, а например с поисковика, то будет отображаться такая ссылка <a href="http://vingrad.ru/">Ссылка</a> ============================ Вот хотелось бы все таки сделать данный код: <a href="http://vingrad.ru/" onclick="window.close();window.open('http://vingrad.ru/');">Ссылка</a> чтобы он окрывал правильно именно ту страницу которая указана в href="" Если есть соображения, то напишите пожалуйста. |
| Автор: Гриша 8.1.2006, 00:40 |
| Sardar, огромное спасибо вам за помощь. Это супер вариант. Я увидел, что даже если окно октрывалось без помощи javascript, то при закрытии такого окна IE не просит разрешение на его закрытие, это значительно упрощает работу. А то при помощи php мне приходилось выводить сыылки в зависимости от того как окно открывалось. А то, что в моем коде href="http://vingrad.ru/" срабатывает после onclick, я не совсем это понял, ведь оно же все равно закрывается при помощи window.close() Еще раз спасибо вам за такой хороший код. |
| Автор: Sardar 8.1.2006, 00:57 | ||||
Функционально происходит именно то что ты хочешь Если же отследить по шагам что на самом деле происходит, то увидим, что браузер заставляет сначала отработать onclick (что логично) и только потом перейти по ссылке. Таким образом мы можем остановить переход традиционным способом вернув false из обработчика события, что в моём примере и происходит. Другими словами: если у пользователя включен JS, то ссылка откроеться в твоём новом окне с параметрами, иначе ссылка всё равно откроеться в новом окне (target="_blank"), а вот в каком окне это уже зависит от бразуера.
Это не код, это короткая строка кода |
| Автор: Гриша 8.1.2006, 15:02 |
| Sardar, спасибо за разъяснение. Тяжело мне как-то с javascriptom разабраться, вот никак он мне не дается. Но у меня на сайте действительно очень многое зависит от javascript, без него не было бы той интерактивности, которая есть. Без javascript даже пришлось бы внести изменения в дизайн, а во всем мне помогли участники этого форума, ух даже незнаю чтобы я делал без этого форума. |