Open windows open hearts

Различия в поведении window.open в разных браузерах

При разработке одного сайта столкнулся с необходимостью проверить работу функции window.open в разных браузерах. Результаты решил оформить и выложить, глядишь кому понадобится, а кто и дополнит, что ещё лучше…

Для тестирования использовались: FireFox 3 beta 3, Netscape Navigator 9, Internet Explorer 6, Opera 9 и Konqueror 3.5 (тест Safari отдельно, в конце топика). При этом FireFox 3 тестировался в двух конфигурациях: по умолчанию и c TabMixPlus (с разрешением открывать popup-ы в новых окнах). Рабочая среда: KDE 3.5 на Debian.

1. Вызов без параметров

FireFox 3 (TMP)
Открыл полноразмерное окно, развернутое на весь экран (как и родительское).

FireFox 3
Открыл новую вкладку.

Navigator 9
Открыл полноразмерное окно, развернутое на весь экран (как и родительское).

Opera 9
Открыла новую вкладку.

IE 6
Открыл полноразмерное окно, развернутое на весь экран (как и родительское).

Konqueror
Открыл окно с размером по умолчанию (родительское окно было развёрнуто на весь рабочий стол).

2. Размеры окна

FireFox 3 (и с TMP и без)
Открыли окно с областью просмотра 640×480 пикселей. В окне отображается строка состояния и адресная строка (неактивная).
Само окно превышает заданный размер за счёт строки состояния, адресной строки, заголовка и границ окна. Размеры окна изменяемы.

Navigaror 9 и Konqueror
Открыли окно с областью просмотра 640×480 пикселей. Само окно превышает заданный размер за счёт заголовка и границ окна.
Размеры окна изменяемы.

Opera 9
Открыла окно с областью просмотра 640×480 пикселей. Само окно превышает заданный размер за счёт заголовка и границ окна.
Так же в коне присутствует небольшая панель, при нажатии разворачивающаяся в панель навигации. При этом сокращается область просмотра, а размеры окна не меняются. Размеры окна изменяемы (имеется ввиду пользователем, при помощи мыши).

IE 6
Открыл окно с областью просмотра 640×480 пикселей. Само окно превышает заданный размер за счёт заголовка и границ окна. Размеры окна НЕ изменяемы.

Теперь я задал окну размеры, заведомо превышающие разрешение монитора.

FireFox 3, Navigator 9, Konqueror
Открыли окно, развёрнутое на весь рабочий стол. В FF3 в окне отображается строка состояния и адресная строка (неактивная).

Opera 9
Открыла новую вкладку.

IE 6
Открыл окно, закрывшее собой весь экран, включая все панели (задач, меню и т.д.). Заголовок окна за пределами экрана.

Выводы

  1. Все браузеры расценивают заданный размер как размер области просмотра.
  2. Реальные размеры окна всегда больше заданных, причём разница варьируется для разных браузеров, за счёт наличия дополнительных панелей.
  3. В Internet Explorer 6 нельзя вручную изменить размеры окна. Кстати, это правильное поведение window.open, т.к. все параметры, не указанные в вызове этой функции должны считаться равными «no» (включая resizable). Хотя это и не всегда удобно с точки зрения пользователя.
  4. Необходимо следить за размером открываемого окна, т.к. при большом размере в IE6 оно может перекрыть пользователю весь рабочий стол

3. Позиционирование

Следующие на очереди — координаты окна. Для этого существуют две пары свойств — left и top в IE и screenX и screenY для NN.
Поочерёдно я попробовал каждую пару во всех браузерах.

window.open(‘http://www.w3.org/’, ‘popup’, ‘width=320,height=240,left=50,top=50’);

FireFox 3, Navigator 9, IE6, Konqueror
Все четыре браузера поняли свойства left и top и спозиционировали окно относительно верхнего левого угла экрана.
Не смотря на эту точку отсчёта, ни один из браузеров, при top = 0 не смог перекрыть окном панель меню.

Читайте также:  Линукс минт или линукс федора

Opera 9
Тоже поняла свойства left и top, но позиционировала окно относительно своей панели вкладок (отсчёт идёт от нижнего края).

window.open(‘http://www.w3.org/’, ‘popup’, ‘width=320,height=240,screenX=50,screenY=50’);

Эти свойства поняли только Gecko-барузеры (FF и NN), Opera и IE их проигнорировали.

Интересно поведение при попытке задать позицию явно превышающую размеры экрана.

window.open(‘http://www.w3.org/’, ‘popup’, ‘width=320,height=240,left=2000,top=1000’);

FireFox 3, Navigator 9, Opera
Открыли окно в нижнем правом углу рабочего стола (Opera — своей рабочей области). Окно видно целиком. Панели не перекрыты.

Konqueror
Окрыл окно в верхнем левом углу рабочего стола. Панели не перекрыты.

IE6
Проверить не удалось. IE просто переставал открывать окна до принудительного снятия процесса.

Выводы

  1. Для позиционирования окна следует использовать свойства left и top, т.к. их понимают все барузеры.
  2. Opera позиционирует окна не относительно экрана, а относительно своей панели вкладок.
  3. Лучше стараться избегать ситуаций когда окно не поместится на рабочем столе, т.к. поведение браузеров разнится.

4. Элементы интерфейса

Последними я проверил управление элементами интерфейса (исключив элементы, специфичные для конкретного браузера):

  • location — поле для набора URL
  • menubar — панель меню
  • scrollbars — полосы прокрутки
  • status — строка состояния
  • toolbar — панель с кнопками Back, Forward, Reload и т.д.

Каждый параметр пробовался как со значением yes, так и no.

FireFox 3

  • location — отображается всегда и всегда неактивно, параметр игнорируется
  • menubar — отображается главное меню
  • scrollbars — появляются полосы прокрутки
  • status — игнорируется, строка состояния показывается всегда
  • toolbar — строка URL страла активной, появилась панель вкладок и дополнительные панели (WebDeveloper)

Navigator 9

  • location — отображается неактивным. Дополнительно отобразилась одна из панелей инструментов (WebDeveloper)
  • menubar — отображается главное меню
  • scrollbars — появляются полосы прокрутки
  • status — появляется строка состояния
  • toolbar — строка URL страла активной, появилась панель вкладок и дополнительные панели (WebDeveloper)

Opera 9

  • location — отображается активное поле ввода и кнопки «Назад», «Вперёд» и т.д.
  • menubar — игнорируется
  • scrollbars — появляются полосы прокрутки
  • status — игнорируется
  • toolbar — игнорируется

IE 6

  • location — отображается активное поле ввода, главное меню и кнопки «Назад», «Вперёд» и т.д.
  • menubar — отображается главное меню
  • scrollbars — появляются полосы прокрутки
  • status — появляется строка состояния
  • toolbar — отображается главное меню и панель инструментов

Konqueror

  • location — отображается всегда и всегда неактивно, параметр игнорируется
  • menubar — отображается главное меню и панель инструментов
  • scrollbars — появляются полосы прокрутки
  • status — появляется строка состояния
  • toolbar — отображается главное меню и панель инструментов

Выводы предоставляю делать самим. Хотя на мой взгляд, IE здесь демонстрирует более правильную реализацию функции window.open.

Проверить свой браузер

Safari

(спасибо qnick)
Safari 3.0.4 (5523.15), mac os 10.5.2
От галочки «Блокировать всплывающие окна» поведение не меняется абсолютно. Если ссылки жать вместе с яблоком (принудительное открытие окна в новой вкладке), то все равно появляются новые окна.

Без параметров: размеры по умолчанию, позиция на 32 пикселя (примерно, на глаз) ниже и правее текущего окна (но если нижняя граница текущего окна очень близко находится от нижней границы экрана, то у нового окна top=0), тулбар, скролл и статусная строка в наличии, окно тянется во все стороны

Размеры 640х480: исчезли тулбар, скролл и статусная строка, окно перестало тянуться. Позиция на 32 пикселя ниже и правее текущего (или top=0, см. выше), размеры 640х480 + 32 пиксела заголовка.

Очень большой размер: размер изменился на 1440х900 (разрешение экрана), top=0 независимо от положения текущего окна. Все остальное по прежнему.

Позиционирование: отсчет идет от верхнего левого угла минус меню, т.е.

В стиле Netscape: то же самое

Читайте также:  Java file windows paths

Вне рабочего стола: left=0, top=0

Location: появилась адресная строка и тулбар, скролла нет, размеры менять нельзя.

Menubar: игнорируется, т.е. аналогично размеру 640х480.

Scrollbars: то же, что и размер 640х480, но появился вертикальный скролл

Status: то же, что и размер 640х480, но появился статусбар.

Toolbar: то же, что и location.

Окончанние

Будет очень здорово, если кто-нибудь дополнит тестами на других браузерах и платформах, в первую очередь конечно в Ineternet Explorer 7 под Windows.

Что такое программы Open Source

Подписка на канал поможет получать новости первыми!

Обмен информацией — это необходимость в технологическом сообществе, где доктрины с открытым исходным кодом помогли построить, развить некоторые из наиболее широко используемых аппаратных и программных продуктов в мире.

Например, Chromium и Android от Google . Оба используют открытый исходный код, а в дальнейшем его устанавливают почти все производители телефонов (кроме Apple ), для своих устройств. Браузер Mozilla Firefox — еще один пример, и он также подчеркивает важность того, как совместное использование и сотрудничество стали частью технологического сообщества.

Особенности OpenSource

Обычно открытый источник относится к приложению или коду, разработанному в сообществе, которое использует принцип обмена информацией. Это революционный процесс и часто может считаться само собой разумеющимся.

Разработчики, которые участвуют в работе с открытым исходным кодом, часто высоко ценят свои проекты, но с удовольствием делают итоги своей работы бесплатной, доступной для всех. Они могут быть первыми, кто создал программное обеспечение, но часто другой разработчик может создавать что-то необычное с их продуктом. Иногда код, предлагаемый на платформе с OpenSource , является недостающим элементом для собственного проекта. Но дело не всегда в том, чтобы увидеть и использовать его.

Основным движущим фактором открытого источника является идея о том, что по мере того, как проекты развиваются, расширяются, ускоряются — эффективнее задействован вовлеченный в них человек. Тем больше разработчики разных направлений, способностей вносят в него свой собственный опыт и знания.

Эти принципы сотрудничества — часто с участием разработчиков из разных стран — естественно предоставляют каждому разработчику возможность работать в той области, в которой он принесет наибольшую пользу. Результат, в итоге, становиться общим для сообщества.

В проектах с OpenSource полный исходный код является общедоступным — обычно с помощью платформ обмена кодами, таких как GitHub , что позволяет любому исследовать его, вносить изменения. Побочным эффектом этого является невозможность получения денег за рассматриваемое программное обеспечение, так как каждый может загрузить и реализовать данный проект. С другой стороны, преимущество в том, что вы можете получить обратную связь, помощь, сотрудничество из гораздо более широкого пула, чем если бы вы развивались как часть стандартной команды. Если просто — можно получить лучшие результаты в гораздо более короткие сроки.

Несмотря на то, что много людей смогут вмешиваться в исходный код (что может быть рискованным), это позволяет проводить дополнительные тестирования множеством программистов, повышая вероятность своевременного выявления критических ошибок. Кроме того, программное обеспечение с открытым исходным кодом обеспечивает более надежную защиту в свете дополнительной помощи для ее формирования или обработки любых проблем.

Совместный характер проектов с открытыми исходными кодами часто может привести к лучшим конечным продуктам. Ведь огромное количество экспертов объединяют свою энергию, время, ресурсы, идеи для их достижения. Наличие людей из разных отраслей с различными наборами навыков дает проектам с открытым кодом отличный многогранный испытательный полигон.

Мы видели технологии с открытым исходным кодом, используемые в качестве основы для всего: от офисного программного обеспечения, такого как редакторы текста или изображений, до целых операционных систем, серверных платформ.

Другое преимущество ПО OpenSource заключается в том, что оно абсолютно бесплатное и может быть загружено/скомпилировано кем угодно. Программы и технологии с открытым исходным кодом не имеют высоких лицензионных сборов, взимаемых с продуктов, созданных разработчиками IT-компаний. Это помогает расширить пул пользователей и делает такие инструменты доступными для большего количества людей.

Читайте также:  Windows 10 пропадают значки ярлыков

История ПО с открытым исходным кодом

«Корни» OpenSource лежат в основе разработок первых вариантов программного обеспечения. В первую очередь это было сообщество исследователей и ученых, основанное на свободном, открытом обмене знаниями, информацией.

В течение следующих нескольких десятилетий количество разработчиков, которые делились своими идеями, уменьшилась. Это обусловлено переходом фирм-разработчиков на «коммерческие рельсы». Но тем не менее, еще остались энтузиасты и любители, которые непрестанно продолжают писать и распространять открытый исходный код, несмотря на все более «актуарный характер ландшафта» программного обеспечения.

Один из способов, которым программисты «делились» своим кодом — это компьютерные книги, журналы, в которых представлены полные «репродукции» исходного кода для копирования и использования читателями. Это стало особенно популярным благодаря увеличению количества домашних компьютеров, таких как Commodore 64, ZX Spectrum , которые можно было использовать для создания игр.

Когда все больше компьютеров подключилось к Интернету, программисты начали делиться своим кодом друг с другом онлайн. Это привело к существенному увеличению количества доступных проектов с открытым исходным кодом и, в конечном итоге, к созданию Линусом Торвальдсом ядра Linux .

Термин «открытый исходный код» или OpenSource был впервые принят сторонниками этих принципов в 1998 году. Он неуклонно рос в своей популярности и утонченности в течение следующих нескольких лет. Хотя программное обеспечение с открытым исходным кодом ранее было известно главным образом среди энтузиастов «хардкорных» вычислений, программистов-гиков, в настоящее время оно достигло широкой популярности, как в глазах общественности, так и внутри корпоративного сообщества.

Чем полезен OpenSource

Самым привлекательным аспектом OpenSource становиться его стоимость, ведь он абсолютно бесплатный. Например, было бы непросто найти бесплатные альтернативы дорогим пакетам, таким как, например, Microsoft Office или Adobe .

Для программистов-разработчиков преимущества выпуска своих разработок в качестве программного обеспечения с открытым исходным кодом — это увеличение обратной связи и приглашения для совместной работы в серьезные IT-компании. Ваши интернет-коллеги помогут изменить, улучшить код, добавляя функции, о которых вы, возможно, не думали или помогут оптимизировать, чтобы сделать проект более эффективным.

Коме того, программное обеспечение с открытым исходным кодом является более безопасным. В конце концов, чем больше специалистов просматривают или работают с частью кода, тем больше вероятность того, что будут обнаружены какие-либо потенциальные ошибки или «дыры» в безопасности. С другой стороны, тот факт, что ошибка Heartbleed долго не обнаруживалась в коде OpenSSL , бросает некоторую тень на эту теорию.

Как зарабатывают деньги на OpenSource

Но подождите, — скажете вы, — если программное обеспечение с открытым исходным кодом бесплатное, то как компании, такие как Red Hat или Canonical , зарабатывают на этом деньги? Это связано с тем, что организации, которые специализируются на продуктах OpenSource , обычно не зарабатывают деньги от продаж самого программного обеспечения, ведь и так каждый может его загрузить, использовать.

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

Другая тактика, часто используемая поставщиками OpenSource , заключается в том, чтобы, свободно предоставляя программное обеспечение, отказывать компаниям в официальной поддержке и других дополнительных услугах, пока они не заключат контракт. Поскольку ИТ-бизнес опирается на минимизацию простоев, то для него необходима сильная поддержка, которая делает такую тактику очень эффективной.

Оцените статью