Гость
Map
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Перестал работать вызов window.close() / 5 сообщений из 5, страница 1 из 1
18.02.2021, 12:36
    #40046608
Титов Артем
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестал работать вызов window.close()
Добрый день!

APEX 19.2

Есть страница с формой, которая открывается в отдельной вкладке браузера. И на странице с формой есть кнопка "Закрыть".
Кнопка обращалась к URL "javascript:window.close();" Ранее она работала. Но сейчас, после обновления страницы, перестала.
При этом если страницу просто открыть и нажать на эту кнопку, то вкладка закрывается.
Думаю, в обновлениях браузера что-то изменилось в плане безопасности.

В консоли видно ошибку JS: Scripts may close only the windows that were opened by them

В сети есть рецепты, но они не работают.

Я создал пустую страницу и делаю на кнопке редирект на нее по команде "javascript:window.open('f?p=950:215:&SESSION.','_self','');"
В итоге страницу открывает скрипт, но попытка ее закрытия по скрипту все равно приводит к этой ошибке и она не закрывается. Использование стандартного для APEX Close Dialog тоже не работает с такой же ошибкой.

Может сталкивался кто-то? Подскажите, где копать...

Спасибо!
...
Рейтинг: 0 / 0
18.02.2021, 13:02
    #40046631
DHDD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестал работать вызов window.close()
Титов Артем,

сравни полные адреса основной страницы и открытой вкладки.

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

1. открываем эту страницу форума.
2. в консоли: newtab=window.open('https://www.sql.ru/forum/1333599/perestal-rabotat-vyzov-window-close');
3. затем: newtab.close()
4. вкладка закрылась.

если в пункте (1) будет другой домен - не сработает (поменяется только свойство newtab.closed с "false" на "true").
...
Рейтинг: 0 / 0
19.02.2021, 08:52
    #40046988
Sah
Sah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестал работать вызов window.close()
Этот сценарий и у ТС работает. Проблема начинается после перезагрузки странцы. Ошибка говорит, что JavaScript'ом можно закрыть только то окно, которое открывалось скиптом с той же страницы. Видимо, при перезагрузке теряется информация о окне-родителе. Что с этим делать, я не знаю.
...
Рейтинг: 0 / 0
19.02.2021, 09:11
    #40046990
Титов Артем
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестал работать вызов window.close()
DHDD
Титов Артем,

сравни полные адреса основной страницы и открытой вкладки.

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

1. открываем эту страницу форума.
2. в консоли: newtab=window.open('https://www.sql.ru/forum/1333599/perestal-rabotat-vyzov-window-close');
3. затем: newtab.close()
4. вкладка закрылась.

если в пункте (1) будет другой домен - не сработает (поменяется только свойство newtab.closed с "false" на "true").


Ваш пример показал мне, где капать.

В итоге заработало вот так:

1) В SQL-запросе в Interactive Report оформил поле со ссылкой на открытие страницы с формой в виде:
Код: plsql
1.
:V_HOST||'/apex/'||APEX_UTIL.PREPARE_URL(p_url => 'f?p='||:APP_ID||':'||t.page_num||':'||:APP_SESSION||'::::P'|| t.page_num||'_ID:'||t.ID)  as  F_LINK


:V_HOST - тут доменное имя, с которого запущено APEX-приложение. Ранее ссылка была оформлена просто через APEX_UTIL.PREPARE_URL
2) В Interactive Report Target для Link оформляю в виде URL "javascript:window.open('#F_LINK#');" . Таким образом страница с формой открывается через скрипт.
3) На странице с формой на кнопке CLOSE вешаю URL "javascript:parent.close();"
...
Рейтинг: 0 / 0
20.02.2021, 09:03
    #40047424
Sah
Sah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестал работать вызов window.close()
Спасибо. Запомню,может пригодится.
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Перестал работать вызов window.close() / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]