У меня есть iFrame с открытым окном (url
, uniqueID
, windowparams
).
IFrame находится в одном приложении и размещается на другом сервере.
Каждый раз, когда я обновляю или изменяю страницу, возвращаюсь на страницу IFrame, а затем пытаюсь инициировать тот же window.open
. Вместо обновления уже открытого окна создается экземпляр того же окна. Проверяя window.name
каждого всплывающего окна, он возвращает тот же uniqueID
, что и его window name
. Если URL установлен пустой, он ведет себя так, как ожидалось. Но когда установлен URL-адрес, он создает новый экземпляр окна.
- Разве iFrame
window.open
ведет себя так, когда уничтожается? - Я попытался запустить источник iFrame локально, и открытое окно корректно ведет себя даже после обновления.
- Я пробовал в IE, Firefox и Chrome, и он возвращал то же поведение.
UPDATE:
Майк успешно исправил поведение браузеров Webkit, добавив свойства песочницы для источника iFrame. Теперь метод window.open
работает по назначению и не создает новые экземпляры одного и того же окна того же window.name
.
Однако Майку до сих пор не повезло с Firefox. Если кто-то может дать работу для этого, это будет очень признательно.
Поведение браузера Webkit для iFrame с sanboxed свойствами в видео ниже.
Посмотрите, что родительский элемент, даже если он обновлен, все еще может обнаружить, что есть уже открытое всплывающее окно с тем же именем. https://youtu.be/z5_xXRjY8Ow
Поведение Firefox для iFrame с sanboxed свойствами в видео ниже.
Когда родительское окно обновляется, браузер не может обнаружить уже открытое всплывающее окно и создает другой экземпляр всплывающего окна с тем же
window.name
. https://youtu.be/uHaDveW1Sd0
Есть ли способ обхода Firefox, как браузеры Webkit?
UPDATE:
Майк узнал, что использование пустого URL в window.open ведет себя правильно в firefox. Но все же, как исправить это ха-ха.
UPDATE:
Здесь Джонни! er Майк означает другой тестовый пример.
Попробуйте использовать браузеры webkit и firefox.
После открытия всплывающего окна обновите страницу, затем откройте другое всплывающее окно
В браузерах webkit будет только один экземпляр вашего окна, однако firefox создаст новый.
console.log(window.name)
в открывшемся всплывающем окне, и вы получите "Mike" в качестве имени окна
https://bug1295839.bmoattachments.org/attachment.cgi?id=8782242