Window.open - переопределить вкладку окна браузера - PullRequest
0 голосов
/ 17 февраля 2020

Допустим, у меня есть два веб-приложения.

В моем первом веб-приложении есть кнопка, которая использует window.open, и когда пользователь нажимает эту кнопку, он открывает новую вкладку с новой ссылкой. Когда он открывает новую вкладку, он помещает целевое имя на эту вкладку.

Например, window.open (url, "foo"); Новая вкладка открывает URL с целевым именем "foo".

Теперь у меня есть второе веб-приложение, и в этом также есть кнопка, которая использует window.open. Если пользователь нажимает эту кнопку, я хочу переопределить любую вкладку с именем «foo», независимо от того, была ли эта вкладка открыта из первого или второго веб-приложения.

Во втором веб-приложении также используется window.open (url, "foo"). Точно такой же код, как у первого веб-приложения.

Проблема в том, что вкладка заменяется только в том случае, если она создана из того же веб-приложения. Если пользователь нажимает кнопку и создает новую вкладку из первого веб-приложения, а пользователь нажимает кнопку из второго веб-приложения, он переопределяет вкладку из первого веб-приложения, но создает другую новую вкладку, хотя имя цели совпадает.

Есть ли способ, которым я могу переопределить любую вкладку с именем цели?

1 Ответ

0 голосов
/ 17 февраля 2020

Нет, и это функция безопасности.

Я не могу найти ссылочную ссылку, но дополнительное требование для повторного использования окна состоит в том, что атрибут window.opener должен быть то же самое.

Так, например, если у вас было две ссылки, подобные этим:

<a href="https://en.wikipedia.org/wiki/Foo" target="foo">Foo on Wikipedia</a>
<a href="https://en.wikipedia.org/wiki/Bar" target="foo">Bar on Wikipedia</a>

, то нажатие на каждую из них снова использовало бы одно и то же окно, потому что цель одинакова и потому что окно, содержащее ссылки, соответствует значению window.opener в целевом окне.

Если вы добавили rel="noopener" к таким ссылкам:

<a href="https://en.wikipedia.org/wiki/Foo" target="foo" rel="noopener">Foo on Wikipedia</a>
<a href="https://en.wikipedia.org/wiki/Bar" target="foo" rel="noopener">Bar on Wikipedia</a>

, то окно не будет использовать повторно (даже если цель совпадает), поскольку значение window.opener не будет соответствовать исходному окну.

...