|  | 
| 
Перестал работать вызов 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=40046990&tid=1873839]: | 0ms | 
| get settings: | 8ms | 
| get forum list: | 15ms | 
| check forum access: | 4ms | 
| check topic access: | 4ms | 
| track hit: | 39ms | 
| get topic data: | 11ms | 
| get forum data: | 2ms | 
| get page messages: | 47ms | 
| get tp. blocked users: | 1ms | 
| others: | 226ms | 
| total: | 357ms | 

| 0 / 0 | 
