оповещение браузера об открытии / всплывающем окне - PullRequest
3 голосов
/ 03 октября 2011

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

    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-адрес одинаков.

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

Ответы [ 2 ]

1 голос
/ 22 февраля 2013

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

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

0 голосов
/ 03 октября 2011

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

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

...