Dlaczego nie mogę otworzyć karty z przyciskiem HTML podczas korzystania ze sklepu Chrome?

11

Mam stronę w interfejsie z różnymi przyciskami, wszystkie przyciski same działają idealnie, ale jeśli kliknę przycisk otwierający rozszerzenie w sklepie internetowym Chrome i kliknę inny przycisk, strona się nie otworzy .

Oto przykład tego, o czym mówię. Jeśli klikniesz przyciski bez zamykania otwieranych kart, przycisk kliknięty po otwarciu sklepu internetowego chrome nie będzie miał wpływu. Czy ktoś wie, dlaczego tak jest i jak to obejść?

https://html-ichr7r.stackblitz.io

Oto jego kod.

<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>

Każda pomoc jest mile widziana!

EDYCJA : Właśnie zorientowałem się, że działa w Firefoksie, ale nadal nie wiem, dlaczego nie działa w Chrome.

Ckuessner
źródło
To bardzo dziwne. Mogę tylko myśleć, że chrome z jakiegoś powodu musi przejmować obiekt okna. Może powinieneś stworzyć bilet na chromie, jeśli nie jesteś w stanie go rozwiązać
0_0

Odpowiedzi:

2

Mam nieco rozwiązanie: w linku popupdo sklepu Google zmień link na coś innego popupWindow, więc będziesz mieć:

<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>

Będziesz miał dwa różne wyskakujące okienka z tym kodem.

Co do wyjaśnienia, jestem trochę w ciemności z tym. Myślę, że Chrome uniemożliwia wykonanie JS https://chrome.google.com/webstore/*jako środek bezpieczeństwa. Możesz przeczytać więcej na temat podobnych problemów tutaj i tutaj tutaj.

Dodanie (po przemyśleniu):

Jest to prawdopodobnie sprytny ruch twórców Chrome. Nie zezwalając JS na modyfikację żadnej ze stron https://chrome.google.com/webstore/, są pewni, że również żadne rozszerzenie nie może zmienić tej strony. Wyobraź sobie, że zainstalujesz rozszerzenie, które dobrze się reklamuje, dzięki czemu uzyska pozytywny wynik, a także zmieni stronę sklepu z rozszerzeniami. Może to skłonić użytkowników do zainstalowania dodatkowych rozszerzeń lub oprogramowania, które zainfekowałoby przeglądarkę lub komputer użytkownika.

Dirk J. Faber
źródło
Tak, otwarcie go w nowej karcie działa dobrze. Może sklep internetowy Chrome jest postrzegany jako rodzaj wbudowanego sklepu z aplikacjami dla Google Chrome i dlatego zachowuje się inaczej? Naprawdę dziwne rzeczy.
Ckuessner,
Jestem przekonany, że zrobiono to ze względów bezpieczeństwa. Do mojej odpowiedzi dodałem możliwe uzasadnienie.
Dirk J. Faber,
0

Nie rozumiem też, dlaczego tak się dzieje, ale mam sposób, aby to spróbować.

  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>

Fahim Khan
źródło