Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как при попадании на сайт открыть пользователю сразу 5 окон (5 URL's)? (https://javascript.ru/forum/dom-window/80607-kak-pri-popadanii-na-sajjt-otkryt-polzovatelyu-srazu-5-okon-5-url%27s.html)

mik888em 28.06.2020 23:41

Как при попадании на сайт открыть пользователю сразу 5 окон (5 URL's)?
 
Есть сайт-страница https://redmap.site/index32.html , при заходе на которую - юзера должно редиректить через 5 секунд на сайт https://google.com .

Во время этих 5 секунд - должны открываться в отдельном (маленьком) окне 5 сайтов , вот по этим юрлам:
https://alpha.com
https://betta.com
https://gamma.com
https://delta.com
https://lambda.com


и должны все эти 5 окон закрываться через 1 секунду.

На данный момент как и нужно - срабатывает через 5 секунд редирект на страницу гугла, и во время этих 5 секунд происходит открытие самого верхнего юрла и закрытие его через 1 секунду. Только этот (самый верхний) url открывается сейчас:

https://alpha.com


Почему не открываются другие юрлы по принципу, открылись на 1 секунду и закрылись?

Код страницы: index1.html
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <title>redmap.site</title>
  <!--[if IE]>
   <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
  <style>
   article, aside, details, figcaption, figure, footer,header,
   hgroup, menu, nav, section { display: block; }
  </style>

<script type="text/javascript">




partner_window1_alpha = window.open("https://alpha.com", "partner", "menubar=no,toolbar=no,location=no,status=no,resizable=no,scrollbars=no,top=5000,left=5000,width=100,height=100");
setTimeout(function() {
  partner_window1_alpha.close();
  location.href = 'https://www.google.com';
}, 5000);


setTimeout(function() {
  partner_window1_alpha.close();
}, 1000);


partner_window2_betta = window.open("https://betta.com", "partner", "menubar=no,toolbar=no,location=no,status=no,resizable=no,scrollbars=no,top=1000,left=1000,width=100,height=100");
setTimeout(function() {
  partner_window2_betta.close();
  location.href = 'https://www.google.com';
}, 5000);


setTimeout(function() {
  partner_window2_betta.close();
}, 5000);


partner_window3_gamma = window.open("https://gamma.com", "partner", "menubar=no,toolbar=no,location=no,status=no,resizable=no,scrollbars=no,top=5000,left=5000,width=100,height=100");
setTimeout(function() {
  partner_window3_gamma.close();
  location.href = 'https://www.google.com';
}, 5000);


setTimeout(function() {
  partner_window3_gamma.close();
}, 1000);


partner_window4_delta = window.open("https://delta.com", "partner", "menubar=no,toolbar=no,location=no,status=no,resizable=no,scrollbars=no,top=5000,left=5000,width=100,height=100");
setTimeout(function() {
  partner_window4_delta.close();
  location.href = 'https://www.google.com';
}, 5000);


setTimeout(function() {
  partner_window4_delta.close();
}, 1000);




partner_window5_lambda = window.open("https://lambda.com", "partner", "menubar=no,toolbar=no,location=no,status=no,resizable=no,scrollbars=no,top=5000,left=5000,width=100,height=100");
setTimeout(function() {
  partner_window5_lambda.close();
  location.href = 'https://www.google.com';
}, 5000);


setTimeout(function() {
  partner_window5_lambda.close();
}, 1000);

 


setTimeout(function() {
  location.href = 'https://www.google.com';
}, 5000);
</script>

 
 </head>
 <body>
  <p>Hello world </p>
 </body>
</html>

voraa 29.06.2020 09:39

partner_window1_alpha = window.open("https://alpha.com", "partner", "menubar=no,toolbar=no,location=no,status=no,resiz able=no,scrollbars=no,top=5000,left=5000,width=100 ,height=100");

У всех открывающихся окон должны быть разные имена. Иначе все будет открываться в одном окне.

setTimeout(function() {
partner_window1_alpha.close();
location.href = 'https://www.google.com';
}, 5000);

Зачем это дублировать?
Если окно будет закрыто через 1 сек, то зачем снова пытаться закрыть через 5 сек?

mik888em 06.07.2020 12:05

Исправил код, удалив лишние попытки закрытия. Работает хорошо, но есть проблема что браузер блокирует всплывающие окна. Читал, что чтоб браузер не блокировал, но нужно выполнять ajax-запрос в синхронном режиме (async:false) тогда браузер это будет считать одним потоком, и не будет блокировать:

на jquery это выглядит приблизительно так:



$.ajax({
  type: 'POST',
  async: false,
  url: '/path/to',
  data: { a: b, c: d },
  success: function(response) {
    window.open('url', '_blank');
  }
});



Как это решение интегрировать с моим кодом, не могу понять в какую сторону копать? Вот мой код:
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <title>redmap.site</title>
  <!--[if IE]>
   <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
  <style>
   article, aside, details, figcaption, figure, footer,header,
   hgroup, menu, nav, section { display: block; }
  </style>

<script type="text/javascript">


partner_window1_alpha = window.open("https://alpha.com", "partner", "menubar=no,toolbar=no,location=no,status=no,resizable=no,scrollbars=no,top=5000,left=5000,width=100,height=100");
setTimeout(function() {
  location.href = 'https://www.google.com';
}, 5000);


setTimeout(function() {
  partner_window1_alpha.close();
}, 1000);


partner_window2_betta = window.open("https://betta.com", "partner", "menubar=no,toolbar=no,location=no,status=no,resizable=no,scrollbars=no,top=1000,left=1000,width=100,height=100");
setTimeout(function() {
  location.href = 'https://www.google.com';
}, 5000);


setTimeout(function() {
  partner_window2_betta.close();
}, 5000);


partner_window3_gamma = window.open("https://gamma.com", "partner", "menubar=no,toolbar=no,location=no,status=no,resizable=no,scrollbars=no,top=5000,left=5000,width=100,height=100");
setTimeout(function() {
  location.href = 'https://www.google.com';
}, 5000);


setTimeout(function() {
  partner_window3_gamma.close();
}, 1000);


partner_window4_delta = window.open("https://delta.com", "partner", "menubar=no,toolbar=no,location=no,status=no,resizable=no,scrollbars=no,top=5000,left=5000,width=100,height=100");
setTimeout(function() {
  location.href = 'https://www.google.com';
}, 5000);


setTimeout(function() {
  partner_window4_delta.close();
}, 1000);




partner_window5_lambda = window.open("https://lambda.com", "partner", "menubar=no,toolbar=no,location=no,status=no,resizable=no,scrollbars=no,top=5000,left=5000,width=100,height=100");
setTimeout(function() {
  location.href = 'https://www.google.com';
}, 5000);


setTimeout(function() {
  partner_window5_lambda.close();
}, 1000);

 


setTimeout(function() {
  location.href = 'https://www.google.com';
}, 5000);
</script>

 
 </head>
 <body>
  <p>Hello world </p>
 </body>
</html>

laimas 06.07.2020 14:09

Цитата:

Сообщение от mik888em
Читал, что чтоб браузер не блокировал

Слава богу, что у пользователя есть такое право - заносить сразу в черный список такие сайты.

mik888em 06.07.2020 14:22

Если пользователю необходимо, то он может так же и разрешить.

laimas 06.07.2020 14:31

Цитата:

Сообщение от mik888em
то он может так же и разрешить

То есть вы считаете, что порнопарад из кучи окон, это то, что желают пользователи? :) Их браузер блокирует как раз и по этой причине - они раздражают. Кроме этого, такие окна не имеют статуса "поверх всех окон" и легко теряются.

mik888em 06.07.2020 14:43

с чего вы решили что данный, цитата"порнопарад из кучи окон" для пользователей которые не будут в курсе этого, я не указывал в теме для кого предназначается этот код.
Если коротко, то код для меня, хочу проверить баны в поиске, но это уже оффтоп.

laimas 06.07.2020 14:46

Если для себя, зачем же так варварски, сделайте это в Iframe, так ведь удобнее и полная гарантия, что окно не пропадет.

mik888em 06.07.2020 15:23

мне необходимо чтобы куки открывающегося в окне сайта - сохранялись в браузере. Насколько я знаю, то при открытии url какого либо сайта во фрейме не происходит сохранение куков это сайта в браузере.

laimas 06.07.2020 15:32

Вы же для себя делаете следовательно вполне можете решить все проблемы, ведь и решение этой проблемы также имеется в сети. Гугл в помощь и сразу
https://habr.com/ru/post/112077/
.....


Часовой пояс GMT +3, время: 18:02.