LINUX.ORG.RU

Как гарантированно открыть новое окно javascript

 


0

1

Есть вот такое из stackoverflow :D

var childWindow;
var windowsOpened = [];

function openChildWindow(url,name,params){
   windowsOpened.push(window.open(url,name,params));
   triggerTimeout(windowsOpened[0]);
   return windowsOpened[0];
}

function triggerTimeout(win){
   setTimeout(function(){ childWindow = win;},5);
}

function getUrlOfChild(){
   if(childWindow){
     alert(childWindow.location);
     childWindow.close();
   }

Но браузер блокирует открытие нового окна

UPDATE: можно, но нет никаких гарантий что будет работать везде.

★★★★★

Последнее исправление: Dron (всего исправлений: 1)

Посмотри, как на redtube сделано, он всегда умудряется открывать новые окна.

anonymous
()

Как правило браузеры блокируют открытие окна, если это происходит не от действий пользователя.

surefire ★★★
()

Повесь на все события клика, тача, мува и т.п.
Фаерфокс вроде разрешает, все хромы блокируют.

Shadow ★★★★★
()
Ответ на: комментарий от surefire

В том то и дело

Dron ★★★★★
() автор топика
Ответ на: комментарий от Shadow

То есть в принципе можно, но для каждого браузера нужно что-то своё придумывать, не не вариант, слишком костыльно, раз нет никаких способов которым браузеры доверяют (vivaldi мне даже по жмаканию по кнопке не дал новое окно, только после разрешения) значит, я просто откажусь от хотелки, всем спасибо)

Dron ★★★★★
() автор топика
Ответ на: комментарий от Dron

А, так тебе тайком от пользователя...
У меня-то всё легально. Просто хромы тупо не дают при загрузке кликнуть.

Shadow ★★★★★
()
Ответ на: комментарий от Shadow

Нет мне не тайком, мне нужно (как один из 3х вариантов) открыть окно и там написать вроде такого «привет» затем через 5 секунд открыть дочернее окно там будет редирект и возвращён токен vk.com/blank.html?acess_token=#aslkdfhlksadjfhlaskdfhksladfh затем получаю из родительского окна url дочернего вырезаю там # и делаю запрос с изменённым url на локально поднятый микро http сервер у пользователя где сервер передаёт токен программе и она начинает работать, это для standalone app oauch2 аутентификации lorstarter :D, я как альтернативу пилю ещё получение через gtkwebkit и вариант с ручной копипастой, но в идеале хотел/хочу использовать рандомный браузер для получения токена автоматом и в соответствии с протоколом oauch2, а не тянуть зависимости в виде libwebkit, хотя с ним конечно всё прозрачнее и проще и наверное правильнее так как всё изолированно и гарантированно будет работать.

Dron ★★★★★
() автор топика
Последнее исправление: Dron (всего исправлений: 2)
Ответ на: комментарий от Dron

Кросс-доменные ограничения - не дадут мне такого сделать, я всё прочёл что только можно, так что привет webkit!

Dron ★★★★★
() автор топика

Никак. Повесь на действия пользователя. По соображениям безопасности будет блокировать. Событие может бы и не явное (клик на область), но зато будет восприниматься браузером как осознанное действие пользователя

silver-bullet-bfg ★★
()

Поубивал бы гадов, пытающихся новое окно открыть вместо вкладки!

anonymous
()

Гарантированно - никак. Негарантированно, но с большой вероятностью - man showModalDialog (выполняется в том же контексте, что и alert, prompt и confirm, в отличие от лошпенского window.open).

rebforce
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.