Чому я не можу відкрити вкладку за допомогою html-кнопки, перебуваючи у веб-магазині Chrome?


11

У мене є сторінка у моєму фронті з різними кнопками, всі кнопки самостійно працюють прекрасно, але якщо натиснути кнопку, яка відкриє розширення у веб-магазині хрому, а потім натисніть на іншу кнопку, сторінка не відкриється .

Ось приклад того, про що я говорю. Якщо ви натискаєте кнопки, не закриваючи вкладки, що відкриваються, кнопка, яку ви натискаєте після відкриття веб-магазину хрому, не матиме ефекту. Хтось знає, чому це так, і як обійти це?

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>

Будь-яка допомога вдячна!

EDIT : Я щойно зрозумів, що він працює у firefox, і досі не знаю, чому він не працює в 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/, він впевнений, що також жодне розширення не може змінити цю сторінку. Уявіть собі, якщо ви встановите розширення, яке дуже добре робить рекламу, тому вона отримає позитивний бал, а також змінює сторінку веб-магазину розширень. Це може привернути користувачів до встановлення додаткових (хакі / рекламних програм) розширень або програмного забезпечення, яке заразить браузер або комп'ютер користувачів.


Так, відкриття його на новій вкладці працює чудово. Можливо, веб-магазин Chrome розглядається як якась вбудована програма Appstore для 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>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.