оповещение браузера об открытии/всплывающем новом окне

У меня есть ссылка, при нажатии на которую браузер открывает новое окно. Это код события клика по этой ссылке:

    var clickView = function(){
                    window.open('/client/item/show/' +  itemID);
                    return false;
                };

У меня также есть еще одна функция, которая читает URL-адрес из вызова ajax и открывает его в новом окне.

            if (json.data && json.data.URL)
            {
                    if (me.urlTarget==='_self'){
                            //use the self window to open the URL
                            window.location.href =json.data.URL;
                    } else{
                            //use new window to open the url.
                            window.open(json.data.URL);
                    }

            }

Для первой функции (clickView) браузер (IE7/8 и Firefox) откроет новую вкладку без предупреждения пользователя. Для второй функции (где URL-адрес считывается из json.data.URL) и IE, и Firefox будут отображать предупреждающее сообщение и блокировать новое окно, пока пользователь не согласится с предупреждением. В обеих функциях начальный URL одинаков.

Мне интересно, почему есть разница, и можно ли заставить их вести себя последовательно?


person LazNiko    schedule 03.10.2011    source источник


Ответы (2)


Ответ, кажется, здесь: open новое окно без предупреждения браузера о том, что это всплывающее окно

Резюме: вызов window.open() в случайное время приводит к тому, что браузер выдает предупреждение/подсказку. Вызов window.open() в результате клика по ссылке работает нормально.

person Gavin G    schedule 22.02.2013

Возможно, второй экземпляр генерирует предупреждение, потому что это абсолютный, а не относительный URL-адрес?

(В любом случае, открытие новых окон браузера — это дьявольская работа).

person graphicdivine    schedule 03.10.2011