Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Новое окно при нажатии на теел сайта (https://javascript.ru/forum/events/53478-novoe-okno-pri-nazhatii-na-teel-sajjta.html)

Schokk 05.02.2015 14:12

Новое окно при нажатии на теел сайта
 
Здравствуйте. Знаю, что данная проблема не новая, но к сожалению никак не могу ее решать.

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

ksa 05.02.2015 14:22

Цитата:

Сообщение от Schokk
Как сделать что бы это происходило только один раз для пользователя?

Как ты идентифицируешь того пользователя? Т.е. как определяешь, что это user1, а не user2?

Schokk 05.02.2015 14:24

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

рони 05.02.2015 14:26

Schokk,
отработало удалилить
elem.removeEventListener( "click", handler, false)
http://learn.javascript.ru/introduct...андарту

ksa 05.02.2015 14:26

Цитата:

Сообщение от Schokk
в том то и дело. никак.

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

ksa 05.02.2015 14:27

Цитата:

Сообщение от рони
отработало удалилить
elem.removeEventListener( "click", handler, false)

Так он страницу перезагрузит и опять мыло-мочало...

Schokk 05.02.2015 14:28

в этом и проблема. я видел на некоторых сайтах подобное. но не знаю как реализовано.

ksa 05.02.2015 14:31

Цитата:

Сообщение от Schokk
я видел на некоторых сайтах подобное

Если нет инициализации (регистрации) пользователя, делают как предложил рони... Или еще в куки пишут... Или в локальные хранилища! :)

Schokk 05.02.2015 14:35

Так будет правильно?
function go_to()
{
window.open('http://navistom.com/');

}
elem.removeEventListener( "click", go_to, false);
...
<body onClick="go_to()">

Schokk 05.02.2015 14:42

Оно все равно много раз открывает.

Schokk 05.02.2015 14:44

А можно ли как то обработать то, что мышка уже была нажата один раз. то есть отталкиваться от количества раз нажатий левой кнопкой? ИЛИ ТАК НЕ ПОЙДЕТ?

ksa 05.02.2015 14:44

Schokk, как вариант...

<!DOCTYPE html>
<html ng-app>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$(document).bind('click',go);
});
function go(){
	window.open('http://javascript.ru/forum/events/53478-novoe-okno-pri-nazhatii-na-teel-sajjta.html#post355180');
	$(document).unbind('click',go);
};
</script>
</head>
<body> 
<p>Test</p>
</body>
</html>

ksa 05.02.2015 14:46

Цитата:

Сообщение от Schokk
А можно ли как то обработать то, что мышка уже была нажата один раз.

Все переменные на странице "живут" от загрузки до закрытия... Перезагрузка страницы инициализирует их поновой. При использовании серверного языка можно еще опереться на сессию и реквест...

Schokk 05.02.2015 15:11

первый вариант не работает. второй все равно открывает кучу раз(

ksa 05.02.2015 15:18

Цитата:

Сообщение от Schokk
первый вариант не работает. второй все равно открывает кучу раз(

Х/з про какие вариант идет речь... Мой вариант открывает окно только один раз.

Schokk 05.02.2015 15:29

я вставил Ваш вариант, ksa и он ничего не делает(

ksa 05.02.2015 15:36

Цитата:

Сообщение от Schokk
я вставил Ваш вариант, ksa и он ничего не делает(

Он работает даже тут на сайте... Я смотрел в Опере.

Schokk 05.02.2015 15:40

я тоже проверил это отдельно. но если его вставить в мой сайт то он не работает(

Schokk 05.02.2015 15:43

из за чего это может быть?

Schokk 05.02.2015 15:50

Вот работающий вариант:
<script type="text/javascript">
var click_cnt = 0;

function ClickUnder()
{
if (!click_cnt) {
window.open("http://ya.ru","ClickUnder");
window.focus();
click_cnt = 1;
}
}
document.onmouseup=ClickUnder;
</script>

ksa 05.02.2015 16:31

Цитата:

Сообщение от Schokk
но если его вставить в мой сайт то он не работает(

Значит
- не все вставил
- не так вставил


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