2010-03-05 6 views
10

Является ли JavaScript window.opener собственностью, надежно доступной в браузерах и не защищенной от любых настроек безопасности и ограничений любого рода? И открывающее, и открытое окно будут находиться в одном домене.Является ли window.opener надежным?

Неужели кто-то сталкивается с проблемами, плохие переживания, используя его при определенных обстоятельствах?

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

ответ

5

Я уже был разработчиком на двух сайтах, которые широко используют window.opener, и я не знаю, когда-либо, когда это подводило меня. Эти приложения были протестированы в IE [678], Firefox и Webkit; Я неофициально использовал Opera и не заметил там проблемы.

Теперь отношения «открыватель» по сути своей хрупкие, потому что вы не можете сделать так, чтобы ваши пользователи не посещали «cnn.com» в главном окне браузера, который использовался для открытия вашего отдельного всплывающего окна. После того, как исходное окно загрузило новое содержимое, ссылка «window.opener» окна «child» в любом случае не принесет вам никакой пользы. Точно так же, когда пользователь идет и открывает новое главное окно браузера и перемещается на ваш сайт, ваши окна «сироты» действительно не смогут его найти.

Конечно, я не могу предложить вам 100% гарантию, что все будет в порядке :-) Моя история верна. Возможно, моя зависимость от «window.opener» не была такой серьезной или глубокой, как то, что вы планируете; Я не могу сказать, что все в моих приложениях зависело от того, что работает.

+0

Cheers @Pointy, что соответствует моему опыту с собственностью. Соединение, безусловно, является хрупким, но в моем случае это не имеет значения - я планирую создать «медиа-менеджер» для редактора WYSIWYG, который занимает весь экран. –

1

Я использовал window.opener в своем приложении и нашел, что с ним приятно работать. Единственное ограничение, которое у него есть, - это активировать всплывающее блокирование пользователем, тогда новое окно не открывается, вызывая проблемы несколько раз.

Хорошая замена для этого (если блокировка всплывающих окон является проблемой) заключается в использовании yui panel также JQuery UI - хороший вариант.

Кроме этого, я не сталкивался с какими-либо проблемами как таковыми, и он отлично работал в браузерах.

+1

+1 для всплывающего окна. Веб-сайт должен оставаться в пределах его границ (окно, которое пользователь попросил загрузить). Однако мое личное мнение. – Jeremy

+0

@Anil @Jer Я обычно соглашаюсь с вами и пользуюсь всплывающими окнами, но это особый случай, когда внешнее окно (или вкладка) абсолютно необходимо. –

+0

@Pekka 웃 Я знаю, что прошло три года, но для записи имейте в виду, что некоторые люди (включая меня) используют расширения или свойства браузера, такие как 'browser.link.open_newwindow = 1', что делает невозможным создание веб-сайта для открыть новое окно. (заставляя их перемещаться по текущей вкладке, а не открывать новую) – ssokolow

5

Стоит отметить, что window.opener не работает, если файл не загружается через HTTP-соединение в Chrome (хотя он отлично работает в Safari).

+0

+1 очень интересно! Вы знаете ссылки для этого? –

+1

Нет, это одна из тех вещей, которые я нашел благодаря работе с ней. Я хочу, чтобы там был ресурс для подобных вещей, но эти странности от браузера к браузеру, похоже, в значительной степени недокументированы. – Heilemann

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