|
Перестал работать вызов window.close()
|
|||
---|---|---|---|
#18+
Добрый день! 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 тоже не работает с такой же ошибкой. Может сталкивался кто-то? Подскажите, где копать... Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 12:36 |
|
Перестал работать вызов window.close()
|
|||
---|---|---|---|
#18+
Титов Артем, сравни полные адреса основной страницы и открытой вкладки. если домены отличаются - доступа не будет (новая безопасность). если одинаковые - всё работает. 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"). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 13:02 |
|
Перестал работать вызов window.close()
|
|||
---|---|---|---|
#18+
Этот сценарий и у ТС работает. Проблема начинается после перезагрузки странцы. Ошибка говорит, что JavaScript'ом можно закрыть только то окно, которое открывалось скиптом с той же страницы. Видимо, при перезагрузке теряется информация о окне-родителе. Что с этим делать, я не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 08:52 |
|
Перестал работать вызов window.close()
|
|||
---|---|---|---|
#18+
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 2) В Interactive Report Target для Link оформляю в виде URL "javascript:window.open('#F_LINK#');" . Таким образом страница с формой открывается через скрипт. 3) На странице с формой на кнопке CLOSE вешаю URL "javascript:parent.close();" ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 09:11 |
|
|
Start [/forum/topic.php?fid=50&msg=40047424&tid=1873839]: |
0ms |
get settings: |
22ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
142ms |
get tp. blocked users: |
2ms |
others: | 298ms |
total: | 563ms |
0 / 0 |