Pourquoi ne puis-je pas ouvrir un onglet avec un bouton html tout en étant sur la boutique en ligne Chrome?

11

J'ai une page dans mon frontend avec différents boutons, tous les boutons, à eux seuls, fonctionnent parfaitement, mais si je clique sur le bouton qui ouvre une extension dans la boutique en ligne Chrome et clique sur un autre bouton après, la page ne s'ouvre pas .

Voici un exemple de ce dont je parle. Si vous cliquez sur les boutons sans fermer les onglets qui s'ouvrent, le bouton sur lequel vous cliquez après l'ouverture de la boutique en ligne Chrome n'aura aucun effet. Est-ce que quelqu'un sait pourquoi c'est et comment contourner cela?

https://html-ichr7r.stackblitz.io

Voici le code pour cela.

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

Toute aide est appréciée!

EDIT : Je viens de comprendre que cela fonctionne dans Firefox, je ne sais toujours pas pourquoi cela ne fonctionne pas dans Chrome.

Ckuessner
la source
C'est très bizarre. Tout ce que je peux penser, c'est que le chrome doit détourner l'objet fenêtre pour une raison quelconque. Vous devriez peut-être créer un ticket sur le chrome si vous n'êtes pas en mesure de le résoudre
0_0

Réponses:

2

J'ai une solution: pour que votre lien popupvers la boutique en ligne Google soit remplacé par quelque chose d'autre popupWindow, vous aurez donc:

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

Vous aurez en fait deux popups différents avec ce code.

Concernant l'explication, je suis un peu dans le noir avec celle-ci. Je pense que Chrome empêche l'exécution de JS en https://chrome.google.com/webstore/*tant que mesure de sécurité. Vous pouvez en savoir plus sur des problèmes similaires ici et ici ici.

Addition (après y avoir réfléchi):

C'est probablement une décision intelligente de la part des développeurs de Chrome. En ne permettant à aucun JS de modifier l'une des pages https://chrome.google.com/webstore/, ils sont sûrs qu'aucune extension ne peut également modifier cette page. Imaginez si vous installez une extension qui fait la chose dans les publicités assez bien pour obtenir un score positif, tout en modifiant également la page de la boutique en ligne de l'extension. Cela pourrait inciter les utilisateurs à installer des extensions ou des logiciels supplémentaires (hacky / adware-ish) qui infecteraient le navigateur ou l'ordinateur des utilisateurs.

Dirk J. Faber
la source
Oui, l'ouvrir dans un nouvel onglet fonctionne bien. Peut-être que la boutique en ligne Chrome est considérée comme une sorte d'Appstore intégré pour Google Chrome et c'est pourquoi elle se comporte différemment? Des trucs vraiment bizarres.
Ckuessner
Je suis convaincu que cela est fait pour des raisons de sécurité. J'ai ajouté un raisonnement possible à ma réponse.
Dirk J. Faber
0

Je ne comprends pas non plus pourquoi cela se produit, mais j'ai un moyen d'essayer cela.

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