Перейти к содержимому


Сообщение При Выходе


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 20

#1 Banker

Banker

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 64 сообщений

Отправлено 13 Август 2013 - 20:39

Добрый вечер!
Нужно всплывающее окно, которое появляется у посетителя, если он что-то положил в корзину, но, так и не сделав заказ, покидает сайт с предложением оформить заказ или закрыть сайт
как сделать?

#2 аккаунт

аккаунт

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 226 сообщений
  • ГородС-Петербург

Отправлено 13 Август 2013 - 21:00

И как вы себе это представляете "покидает сайт" ? Если клиент закрыл страницу с сайтом то никаких всплывающих окон уже не будет. Я знаю один магазин где на емайл клиента, указанный при оформлении заказа, приходит уведомление о том что он забыл оформить свой заказ (товары положены в корзину но не нажата грубо говоря кнопка "оплатить") Вот это интересное и полезное было бы нововведение на платформе стореленд...

#3 Banker

Banker

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 64 сообщений

Отправлено 13 Август 2013 - 22:02

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

#4 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 14 Август 2013 - 00:31

Как вариант использовать что-то вроде

$(window).unload(function() {
  if($('#cartInfo #cartSum .num').length) {
	 if(confirm('У вас имеются товары в корзине, хотите оформить заказ?')) {
		document.location = $('#cartInfo > a').attr('href');
	 }
  }
});

добавив данный код в файл main.js
К сожалению, заставить работать корректно данное событие во всех браузерах - нельзя. В каких-то оно будет работать, в каких-то не будет.

#5 Banker

Banker

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 64 сообщений

Отправлено 14 Август 2013 - 21:56

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

#6 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 15 Август 2013 - 00:24

Как вариант попробовать использовать

window.onbeforeunload = function (event) {
  var event = event || window.event;
  var message = $('#cartSum .num').length ? 'У вас имеются товары в корзине, хотите оформить заказ?' : null;
  if(event) {
	event.returnValue = message;
  }
  return(message);
};

Данный функционал по сути будет отличаться в разных браузерах, так как это действие не имеет спецификации. Действия которые вы описываете - реализовать нельзя. Вся работа по информированию об уходе с страницы - накладывается на сам браузер. Повлиять на данную работу или затруднительно, а местами невозможно.

#7 onmyoji

onmyoji

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 139 сообщений

Отправлено 13 Январь 2014 - 14:25

Просмотр сообщенияСake (15 Август 2013 - 00:24) писал:

Как вариант попробовать использовать

window.onbeforeunload = function (event) {
var event = event || window.event;
var message = $('#cartSum .num').length ? 'У вас имеются товары в корзине, хотите оформить заказ?' : null;
if(event) {
event.returnValue = message;
}
return(message);
};

Данный функционал по сути будет отличаться в разных браузерах, так как это действие не имеет спецификации. Действия которые вы описываете - реализовать нельзя. Вся работа по информированию об уходе с страницы - накладывается на сам браузер. Повлиять на данную работу или затруднительно, а местами невозможно.

В Firefox работает, но не пишет требуемое сообщение. Просто пишет, что введенные данные могут не сохраниться.
В Опера не работает.
В ИЕ пишет: "Вы действительно хотите покинуть страницу? Сообщение страницы: null" Выдает это сообщение и на внутренние переходы, и на закрытие страницы.
В Хроме пишет: "Подтвердите переход null Вы действительно хотите покинуть эту страницу?", причем не на закрытие, а на внутренний переход. На закрытие ничего не пишет.

Получается очень нестабильный вариант. Есть способы заставить его работать более предсказуемо?

#8 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 14 Январь 2014 - 02:03

Можно попробовать использовать код

window.onbeforeunload = function (event) {
if($('#cartSum .num').length && event) {
   event.returnValue = 'У вас имеются товары в корзине, хотите оформить заказ?';
   return(message);
}
};


#9 onmyoji

onmyoji

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 139 сообщений

Отправлено 21 Январь 2014 - 19:24

Спасибо за новый вариант.

Результаты проверки такие:
Firefox - никакой реакции.
Chrome - показывает это сообщение при внутренних переходах и при закрытии страницы.
Opera - никакой реакции.
IE показывает это сообщение при внутренних переходах и при закрытии страницы.

Скажите, пожалуйста, можно ли сделать так, чтобы этот скрипт срабатывал только на закрытие страницы, игнорируя внутренние переходы? Пусть не со всех браузерах, да пусть даже хотя бы в одном, но только на закрытие страницы. Потому что когда окошко вылазит при внутренних переходах, эффект получается обратный - только мешает делать покупки :(

#10 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 22 Январь 2014 - 01:13

Попробуйте использовать следующий код

window.unload = true;
window.onbeforeunload = function(event) {
  if(parseInt($('#cartSum span').text()) && event && window.unload) {
   return('У вас имеются товары в корзине, хотите оформить заказ?');
  }
};
$('a').click(function() {
  window.unload = false;
});
$('form').submit(function() {
  window.unload = false;
});


#11 onmyoji

onmyoji

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 139 сообщений

Отправлено 22 Январь 2014 - 15:52

Нет, тоже не получается так :-( В основном, браузеры показывают удерживающее сообщение и при внутреннем переходе.

Firefox - показывает при внутреннем переходе и при закрытии страницы.
Хром то же самое.
ИЕ то же самое.
Опера ничего не показывает.

#12 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 22 Январь 2014 - 23:42

Вы удаляли предыдущий (вставленный) код? В файле main.js должно находиться только одно событие onbeforeunload. Проверьте не содержится ли у вас дубликатов, так же попробуйте очистить кэш перед проверкой работоспособности кода. По идее при внутренних переходах (по ссылкам) сообщение появляться не должно (проверялось).

#13 onmyoji

onmyoji

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 139 сообщений

Отправлено 23 Январь 2014 - 10:07

У меня только 1 такой код. Вот посмотрите сейчас, у вас отображается окошко на внутренние переходы? http://ecograce.ru

#14 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 24 Январь 2014 - 00:19

Проблема возникает из-за того что код инициализируется слишком рано. Замените ранее вставленный код

window.unload = true;
window.onbeforeunload = function(event) {
  if(parseInt($('#cartSum span').text()) && event && window.unload) {
   return('У вас имеются товары в корзине, хотите оформить заказ?');
  }
};
$('a').click(function() {
  window.unload = false;
});
$('form').submit(function() {
  window.unload = false;
});

на следующий

$(function() {
window.unload = true;
window.onbeforeunload = function(event) {
  if(parseInt($('#cartSum span').text()) && event && window.unload) {
   return('У вас имеются товары в корзине, хотите оформить заказ?');
  }
};
$('a').click(function() {
  window.unload = false;
});
$('form').submit(function() {
  window.unload = false;
});
});


#15 onmyoji

onmyoji

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 139 сообщений

Отправлено 24 Январь 2014 - 17:29

Ух ты, получилось!!)))) Спасибо :wub:

Теперь другая проблема - сообщение показывается при выборе фильтра (в левом столбике) :( Можно с этим что-то сделать?..

#16 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 25 Январь 2014 - 01:56

Попробуйте код

$(function() {
window.unload = true;
window.onbeforeunload = function(event) {
  if(parseInt($('#cartSum span').text()) && event && window.unload) {
   return('У вас имеются товары в корзине, хотите оформить заказ?');
  }
};
$('a').click(function() {
  window.unload = false;
});
$('form').submit(function() {
  window.unload = false;
});
});

заменить на следующий

$(function() {
window.unload = true;
window.onbeforeunload = function(event) {
  if(parseInt($('#cartSum span').text()) && event && window.unload) {
   return('У вас имеются товары в корзине, хотите оформить заказ?');
  }
};
$('a, .contentTbodySearchFilterBlock input').click(function() {
  window.unload = false;
});
$('form').submit(function() {
  window.unload = false;
});
});


#17 onmyoji

onmyoji

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 139 сообщений

Отправлено 25 Январь 2014 - 10:15

Хром перестал показывать всплывающее окошко на выбор фильтра, а ИЕ и Фаерфокс все равно отображают.

#18 Banker

Banker

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 64 сообщений

Отправлено 26 Январь 2014 - 12:03

У меня при каждом обновлении страницы выскакивает это окно, если в корзине что-то есть. Это можно исправить?
И еще, возможно ли изменить окно на свое собственное (с картинками, шрифтами и т.п.)?
Спасибо!

#19 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 28 Январь 2014 - 03:59

К сожалению изменить поведение появления окна при обновлении страницы не представляется возможным. Так же нет возможности изменить стилизацию данного окна, так как данное окно обрабатывается самим браузером.

#20 onmyoji

onmyoji

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 139 сообщений

Отправлено 28 Январь 2014 - 14:44

Интересно, есть какая-нибудь статистика, как часто пользователи жмут "назад" и "обновить". Мне кажется, они в основном тыкают дальше что-нибудь.
Хотя, конечно, с фильтрами тоже немного грустно получается. Положил чел в корзину, ищет что-то еще, а ему "купи" да "купи" :-)




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных