Warum kann ich im Chrome-Webshop keinen Tab mit einer HTML-Schaltfläche öffnen?

11

Ich habe eine Seite in meinem Frontend mit verschiedenen Schaltflächen. Alle Schaltflächen für sich funktionieren einwandfrei. Wenn ich jedoch auf die Schaltfläche klicke, die eine Erweiterung im Chrome-Webshop öffnet, und anschließend auf eine andere Schaltfläche klicke, wird die Seite nicht geöffnet .

Hier ist ein Beispiel dafür, wovon ich spreche. Wenn Sie auf die Schaltflächen klicken, ohne die sich öffnenden Registerkarten zu schließen, hat die Schaltfläche, auf die Sie nach dem Öffnen des Chrome-Webshops klicken, keine Auswirkung. Weiß jemand, warum das so ist und wie man das umgeht?

https://html-ichr7r.stackblitz.io

Hier ist der Code dafür.

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

Jede Hilfe wird geschätzt!

EDIT : Ich habe gerade herausgefunden, dass es in Firefox funktioniert, weiß aber immer noch nicht, warum es in Chrome nicht funktioniert.

Ckuessner
quelle
Das ist sehr komisch. Ich kann mir nur vorstellen, dass Chrom aus irgendeinem Grund ein Fensterobjekt entführt. Vielleicht sollten Sie ein Ticket auf Chrom erstellen, wenn Sie es nicht lösen können
0_0

Antworten:

2

Ich habe eine Art Lösung: Ändern Sie für Ihren Google Webstore-Link popupetwas anderes popupWindow, also haben Sie:

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

Sie haben tatsächlich zwei verschiedene Popups mit diesem Code.

Über die Erklärung bin ich mit dieser ein bisschen im Dunkeln. Ich denke, Chrome verhindert die Ausführung von JS https://chrome.google.com/webstore/*als Sicherheitsmaßnahme. Sie können mehr über ähnliche Probleme lesen hier und hier hier.

Ergänzung (nach einigen Überlegungen):

Dies ist wahrscheinlich ein kluger Schachzug der Entwickler von Chrome. Indem sie keinem JS erlauben, eine der Seiten zu ändern https://chrome.google.com/webstore/, sind sie sicher, dass auch keine Erweiterung diese Seite möglicherweise ändern kann. Stellen Sie sich vor, Sie installieren eine Erweiterung, die die Werbung recht gut macht, sodass sie eine positive Bewertung erhält und gleichzeitig die Seite des Webstores für Erweiterungen ändert. Es könnte Benutzer dazu verleiten, zusätzliche (hacky / adware-artige) Erweiterungen oder Software zu installieren, die den Browser oder Computer des Benutzers infizieren würden.

Dirk J. Faber
quelle
Ja, das Öffnen in einem neuen Tab funktioniert einwandfrei. Vielleicht wird der Chrome-Webstore als eine Art Inbuild-Appstore für Google Chrome angesehen, und deshalb verhält er sich anders? Wirklich komisches Zeug.
Ckuessner
Ich bin überzeugt, dass dies aus Sicherheitsgründen geschieht. Ich habe meiner Antwort mögliche Gründe hinzugefügt.
Dirk J. Faber
0

Ich verstehe auch nicht, warum das passiert, aber ich habe eine Möglichkeit, dies zu versuchen.

  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
quelle