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

mik888em 06.07.2020 17:02

Интересная идея, тогда должны открываться во фрейме эти 5 сайтов и передаваться с них куки в мой браузер

https://alpha.com
https://betta.com
https://gamma.com
https://lambda.com
https://delta.com


а так же после открытия этих сайтов во фрейме и присваивание куков, должен происходить редирект на https://google.com

Я использовал второй способ из предложенного вами метода по ссылке с хабра https://habr.com/ru/post/112077/

Но где-то допустил ошибку в коде.


Суть метода:
в iframe создаётся форма, action которой ведёт на нужную страницу текущего домена
форма отправляется посредством JavaScript

И этот метод работает: скрипт, расположенный по адресу action'а формы(и последующие вызываемые скрипты), успешно установит cookies.

При этом не имеет значения тот факт, будет ли отправлена форма методом GET или POST.

Пример реализации с использованием jQuery:


<script type="text/javascript">
$(function(){
	$('body').append('<form id="cookiesHackForm" action="http://example.com/" method="get"></form>');
	$('#cookiesHackForm').submit();
});
</script>


Достоинства:
+ не требует действий от пользователя

Недостатки:
— требуется JavaScript
— требуется пустая страница только лишь для редиректа



<!DOCTYPE html>
<html>
 <head>
 <meta name="robots" content="noindex">
 <!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V51JXCRKXR"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-V51JXCRKXR');
</script>

  <meta charset="utf-8" />
  <title>redmap.site</title>
  <!--[if IE]>
   <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
  <style>

.clesidra_img {
    height: 900px;
    position: relative;
}
.clesidra_img img {
    position: absolute;
    margin: auto;
    left: 0;
    top: 0;
    bottom: 0;
    right: 0;
  }
   
  </style>


<script type="text/javascript">

$(function(){
	$('body').append('<form id="cookiesHackForm" action="https://google.com" method="get"></form>');
	$('#cookiesHackForm').submit();
});
</script>

<script type="text/javascript">


 

</script>

  
 </head>
 <body bgcolor="#D4D3D3" background="clesidra.jpg">
<p>
</p>

<iframe src="https://alpha.com" width="600" height="500" frameborder="0"></iframe>
<iframe src="https://betta.com" width="600" height="500" frameborder="0"></iframe>
<iframe src="https://gamma.com" width="600" height="500" frameborder="0"></iframe>
<iframe src="https://lambda.com" width="600" height="500" frameborder="0"></iframe>
<iframe src="https://delta.com" width="600" height="500" frameborder="0"></iframe>

<div class="clesidra_img">
<img src="data:image/gif;base64,R0lGODlh.......СОКРАТИЛ ТУТ ВЕСЬ КОД BASE64 ИЗОБРАЖЕНИЯ  КОТОРОЕ ОТОБРАЖАЕТСЯ НА СТРАНИЦЕ ДОМЕНА  ДО РЕДИРЕКТА НА google.com : ) .......TlJWflWAAA7" 
   width="550" height="343" alt="base64 test">
</div>

 </body>

</html>

laimas 06.07.2020 17:13

Я не могу понять, если вы делаете некий инструмент для себя, то почему не поступить проще - разрешить прием кук в настройках браузера или использовать браузер, в котором они по умолчанию разрешены, Firefox?

mik888em 06.07.2020 18:22

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

mik888em 07.07.2020 18:20

Цитата:

Сообщение от laimas (Сообщение 526816)
Я не могу понять, если вы делаете некий инструмент для себя, то почему не поступить проще - разрешить прием кук в настройках браузера или использовать браузер, в котором они по умолчанию разрешены, Firefox?

Есть идеи что я не так сделал? Не работает способ номер2


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