onkeydown не работает в новом окне с URL-адресом

В моем приложении React я открываю новое окно одним нажатием кнопки. Это окно хранится в переменной, и я добавил функции для событий onkeydown и onbeforeunload.

Я заметил, что эти функции вызываются только тогда, когда URL-адрес окна пуст.

window.open('', '', '')

Для непустых URL-адресов эти события не запускаются.

window.open('https://wwww.stackoverflow.com', '', '')

Вот codeandbox, демонстрирующий это:

Редактировать upbeat-sanderson-bv83q

Это как-то связано с самим URL? Пожалуйста, укажите, если я что-то пропустил здесь ...


РЕАЛЬНЫЙ ПРИМЕР ИСПОЛЬЗОВАНИЯ:

В моем внешнем приложении (которое работает на порту 3000) я пытаюсь открыть новое окно, которое открывает внутренний URL-адрес (который работает на порту 8000). Таким образом, при нажатии кнопки в http://localhost:3000 откроется новое окно, указывающее на http://localhost:8000/api/something.

Итак, я добавил nginx в качестве обратного прокси-сервера и указал «/» на 3000 и «/ api» на 8000 и получил доступ к обоим из них через порт 80 следующим образом:

http {
    upstream backend {
        server 127.0.0.1:8000;
    }

    upstream frontend {
        server 127.0.0.1:3000;
    }

    server {
        listen 80;

        location /api {
            proxy_pass http://backend;
        }
    
        location / {
            proxy_pass http://frontend;
        }
    }
}

Итак, теперь я могу получить доступ к приложению пользовательского интерфейса, перейдя по адресу http://localhost, и при нажатии кнопки откроется новое окно http://localhost/api/something< /сильный>. Разве это не должно решить ту же проблему происхождения?


person Sreekar Mouli    schedule 30.01.2021    source источник


Ответы (1)


Вы ничего не упускаете. Это работает, как и ожидалось. Из-за политики одинакового происхождения Javascript не может обнаружить это событие в разных доменах.

Обновлять:

Если вы ищете обходной путь, вам, вероятно, следует увидеть этот ответ, поскольку они обсуждали эту проблему и предлагали некоторые решения. Кроме того, поскольку у вас должен быть один и тот же хост и порт для API и внешнего интерфейса после обратного прокси, мне кажется, что политика одного и того же происхождения больше не будет проблемой.

person ali sasani    schedule 30.01.2021
comment
Есть ли обходной путь для этого? - person Sreekar Mouli; 31.01.2021
comment
Я обновил описание, пожалуйста, проверьте - person Sreekar Mouli; 31.01.2021