Функция Javascript два открытых окна не работают

#javascript

#javascript

Вопрос:

я знаю, что это избыточный вопрос, но эти статьи в Google не помогли мне буквально, потому что, я думаю, мой подход был другим, но вот оно, два открытых окна не работают, даже если я их зацикливаю. я получаю только первый элемент массива, который facebook.com

 var link = function (){
    var websites = ['www.facebook.com', 'www.google.com']
   for(var x = 0; x < websites.length; x  ){
       window.open(websites[x])
   }
}
 

Я тоже пробовал это:

 var link = function (){
       
          window.open('www.facebook.com')
             window.open('www.google.com')
    }
 

тот же результат, дает мне fb.com

Комментарии:

1. используйте window. местоположение.href

2. Блокируется ли второе? Откройте инструменты разработчика и посмотрите.

3. Большинство браузеров по умолчанию запрещают открывать несколько окон одновременно. Как программист, нет никакого способа переопределить это. Если пользователь явно внесет ваш сайт в белый список в настройках своего браузера, ваш код будет работать.

4. Привет @rags2riches, тоже не работает. это просто замена моей текущей веб-страницы, я хочу новое окно

5. смотрите мой ответ ниже, где я рассматриваю эту проблему

Ответ №1:

Во-первых, используйте https протокол в строках вашего URL-адреса внутри массива. Во-вторых, для каждого элемента в вашем цикле используйте window.open() передачу второго аргумента "_blank" , чтобы открыть URL-адреса в новых вкладках соответственно.

 function link () {
    var websites = ['https://www.facebook.com', 'https://www.google.com']
    for (var x = 0; x < websites.length; x  ) {
        var website = websites[x];
        window.open(website, "_blank");
    }
}

link();
 

Протестировано в:

https://jsbin.com/fezolavepa/edit?js ,консоль

Ответ №2:

Обычно написанный вами код должен работать, но причина, по которой это не так, заключается в том, что браузер обнаружил всплывающие окна.

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

Или вы можете использовать это вместо

 var link = function (){
var websites = ['www.facebook.com', 'www.google.com']
for(var x = 0; x < websites.length; x  ){
   setTimeout(() => {window.open(websites[x], '_blank)}, 2000)
}
 

Я надеюсь, что это решит вашу проблему

Комментарии:

1. Если это все еще не работает, то, боюсь, ваш единственный вариант — сообщить пользователю отключить всплывающие окна