Почему я не могу открыть вкладку с помощью кнопки HTML, находясь в интернет-магазине Chrome?

11

У меня есть страница в моем веб-интерфейсе с различными кнопками, все кнопки сами по себе работают отлично, но если я нажимаю кнопку, открывающую расширение в интернет-магазине Chrome, а затем нажимаю другую кнопку, страница не открывается ,

Вот пример того, о чем я говорю. Если вы нажимаете кнопки, не закрывая открывающиеся вкладки, кнопка, которую вы нажимаете после открытия интернет-магазина Chrome, не будет иметь эффекта. Кто-нибудь знает, почему это так и как обойти это?

https://html-ichr7r.stackblitz.io

Вот код для этого.

<button id="button1" onclick="window.open('https://www.facebook.com/','popup','width=700,height=300');"><strong>CONTINUAR</strong></button><br>
<button id="button2" onclick="window.open('https://www.google.com/','popup','width=700,height=300');"><strong>CONTINUAR</strong></button>

<button id="button3" onclick="window.open('https://chrome.google.com/webstore/detail/dark-mode/dmghijelimhndkbmpgbldicpogfkceaj?hl=de','popup','width=700,height=300');"><strong>CONTINUAR</strong></button><br>
<button id="button4" onclick="window.open('https://www.9gag.com/','popup','width=700,height=300');"><strong>CONTINUAR</strong></button>

Любая помощь приветствуется!

РЕДАКТИРОВАТЬ : Я только что понял, что он работает в Firefox, но до сих пор не знаю, почему он не работает в Chrome.

Ckuessner
источник
Это очень странно. Все, что я могу думать, это то, что Chrome по какой-то причине угоняет объект окна. Может быть, вам следует создать заявку на хром, если вы не можете ее решить
0_0

Ответы:

2

У меня есть какое-то решение: для вашей ссылки в интернет-магазине Google нужно изменить popupчто-то похожее popupWindow, поэтому у вас будет:

<button id="button1" onclick="window.open('https://www.facebook.com/','popup','width=700,height=300');"><strong>CONTINUAR</strong></button><br>
<button id="button2" onclick="window.open('https://www.google.com/','popup','width=700,height=300');"><strong>CONTINUAR</strong></button>

<button id="button3" onclick="window.open('https://chrome.google.com/webstore/detail/dark-mode/dmghijelimhndkbmpgbldicpogfkceaj?hl=de','popupWindow','width=700,height=300');"><strong>CONTINUAR</strong></button><br>
<button id="button4" onclick="window.open('https://www.9gag.com/','popup','width=700,height=300');"><strong>CONTINUAR</strong></button>

На самом деле у вас будет два разных всплывающих окна с этим кодом.

Что касается объяснения, я немного смутился с этим. Я думаю, что Chrome мешает запускать JS https://chrome.google.com/webstore/*в качестве меры безопасности. Вы можете прочитать больше о подобных проблемах здесь и здесь здесь.

Дополнение (после некоторых размышлений об этом):

Вероятно, это умный ход со стороны разработчиков Chrome. Не позволяя какой-либо JS изменять какие-либо страницы https://chrome.google.com/webstore/, они уверены, что никакое расширение не может изменить эту страницу. Представьте себе, если вы устанавливаете расширение, которое хорошо справляется с рекламой, оно получит положительную оценку, а также изменит страницу интернет-магазина расширений. Это может заставить пользователей установить дополнительные (hacky / adware-ish) расширения или программное обеспечение, которые могут заразить пользовательский браузер или компьютер.

Дирк Дж. Фабер
источник
Да, открытие в новой вкладке работает нормально. Может быть, интернет-магазин Chrome рассматривается как некий встроенный магазин приложений для Google Chrome, и поэтому он ведет себя по-другому? Действительно странные вещи.
Ckuessner
Я убежден, что это сделано из соображений безопасности. Я добавил возможную аргументацию в мой ответ.
Дирк Дж. Фабер,
0

Я также не понимаю, почему это происходит, но у меня есть способ попробовать это.

  function openWindow(url, type){
    var demo = window.open(url,'popup','width=700,height=300')
      demo.window.close();
        window.open(url,'popup','width=700,height=300')
  }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="button1" onclick="openWindow('https://www.facebook.com/login')"><strong>CONTINUAR</strong></button><br>
<button id="button2" onclick="openWindow('https://www.google.com/')"><strong>CONTINUAR</strong></button>

<button id="button3" onclick="openWindow('https://chrome.google.com/webstore/')"><strong>CONTINUAR</strong></button><br>
<button id="button4" onclick="openWindow('https://www.9gag.com/')"><strong>CONTINUAR</strong></button>

Фахим Хан
источник