2011-01-27 7 views
0

когда мы пишемЧто именно происходит, когда мы пишем window.open()?

window.open(url,target,..) 

открывается новое окно .. Может кто-нибудь сказать мне, как это происходит внутри

+2

Можете ли вы уточнить? Я имею в виду, что ответ: браузер открывает окно. И все же, я подозреваю, что вам нужно больше ... :-) –

+0

То же самое происходит, когда вы дважды щелкните значок браузера, но window.open() запустите окно браузера с переданным параметром –

+0

Поместите отладчик перед вызовом window.open. Попробуйте отладить –

ответ

2

Вот все, что я могу думать:

  1. браузера решит, следует ли игнорировать ваш open запрос в зависимости от его всплывающих настроек (большинство браузеров будут игнорировать вызовы open, которые не являются в прямого ответа к событию пользователя, как щелчок). Предполагая, что это позволяет:
  2. Браузер создает новое окно. Он может или не может выбрать создание этого окна на новой вкладке, и он может или не может обратить внимание на размеры и настройки, которые вы запросили (если вы запросили некоторые).
  3. Браузер устанавливает свойство opener нового окна, поэтому он указывает на объект window, который выдает вызов open.
  4. Браузер начинает загрузку нужного ресурса в новое окно (если вы предоставили ресурс для загрузки).
  5. Вызов window.open возвращает ссылку на новый объект window.

Обратите внимание, что ссылки, что окна имеют друг к другу являются «внешней» фаской соответствующего window объекта, который не обязательно совпадает с реальным объектом окна. (Странно, но это правда, это для безопасности, больше в this other StackOverflow question.) Возможно, что, хотя вы открыли окно, у вас нет доступа к содержимому этого окна, потому что оно происходит от другого источника.

Что касается внутренних компонентов того, как браузеры действительно это делают, это полностью зависит от реализации браузера. Для браузеров с открытым исходным кодом, таких как Firefox и Chrome, вы можете узнать, глядя на источник ...

+0

спасибо :) .. для информации, но поскольку я упомянул о своей проблеме в комментариев, может быть сложно обработать мой сценарий из предоставленной вами информации:) ... – Asha

+1

@asha: Я не уверен, что я следил за вашим комментарием о внешнем приложении, создающем новые окна в одном экземпляре браузера, не звучит как то, с чем мне пришлось иметь дело в прошлом. Удачи вам, –

0

Браузер создает новое окно, устанавливает имя, размеры, положение, параметры и т.д., а затем загружает URL-адрес в него. Это то, что вы имеете в виду?

+0

Да .. Как это происходит внутри? – Asha

+0

Это зависит от браузера и платформы. Для Windows браузер будет вызывать функцию API CreateWindowEx() и перейти оттуда. Но такие детали недоступны, поскольку большинство браузеров закрыты. – Merijn

+0

Firefox и Chromium (который почти такой же, как Chrome) - с открытым исходным кодом;) –

Смежные вопросы