28.06.2020, 23:41
|
Кандидат Javascript-наук
|
|
Регистрация: 21.06.2020
Сообщений: 145
|
|
Как при попадании на сайт открыть пользователю сразу 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>
|
|
29.06.2020, 09:39
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
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 сек?
|
|
06.07.2020, 12:05
|
Кандидат Javascript-наук
|
|
Регистрация: 21.06.2020
Сообщений: 145
|
|
Исправил код, удалив лишние попытки закрытия. Работает хорошо, но есть проблема что браузер блокирует всплывающие окна. Читал, что чтоб браузер не блокировал, но нужно выполнять 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>
|
|
06.07.2020, 14:09
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от mik888em
|
Читал, что чтоб браузер не блокировал
|
Слава богу, что у пользователя есть такое право - заносить сразу в черный список такие сайты.
|
|
06.07.2020, 14:22
|
Кандидат Javascript-наук
|
|
Регистрация: 21.06.2020
Сообщений: 145
|
|
Если пользователю необходимо, то он может так же и разрешить.
|
|
06.07.2020, 14:31
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от mik888em
|
то он может так же и разрешить
|
То есть вы считаете, что порнопарад из кучи окон, это то, что желают пользователи? Их браузер блокирует как раз и по этой причине - они раздражают. Кроме этого, такие окна не имеют статуса "поверх всех окон" и легко теряются.
|
|
06.07.2020, 14:43
|
Кандидат Javascript-наук
|
|
Регистрация: 21.06.2020
Сообщений: 145
|
|
с чего вы решили что данный, цитата"порнопарад из кучи окон" для пользователей которые не будут в курсе этого, я не указывал в теме для кого предназначается этот код.
Если коротко, то код для меня, хочу проверить баны в поиске, но это уже оффтоп.
|
|
06.07.2020, 14:46
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Если для себя, зачем же так варварски, сделайте это в Iframe, так ведь удобнее и полная гарантия, что окно не пропадет.
|
|
06.07.2020, 15:23
|
Кандидат Javascript-наук
|
|
Регистрация: 21.06.2020
Сообщений: 145
|
|
мне необходимо чтобы куки открывающегося в окне сайта - сохранялись в браузере. Насколько я знаю, то при открытии url какого либо сайта во фрейме не происходит сохранение куков это сайта в браузере.
|
|
06.07.2020, 15:32
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Вы же для себя делаете следовательно вполне можете решить все проблемы, ведь и решение этой проблемы также имеется в сети. Гугл в помощь и сразу
https://habr.com/ru/post/112077/
.....
|
|
|
|