Убить сессии в браузере / закрыть вкладку - PullRequest
1 голос
/ 22 декабря 2010

Я пытался решить , как закрыть сеанс, когда браузер / вкладка закрыта . После ответа Даниэля Мело + установка значения TTL для сессии на 0, я почти готов, но совет Даниэля: не работает для типа ввода = [кнопка] .

var validNavigation = false;

function endSession() {
    document.cookie = 'MYOWNSESSID=; path=/';
}

function okEvent(){
     validNavigation = true;
  }

function wireUpEvents() {

  window.onbeforeunload = function() {
      if (!validNavigation) {
         endSession();
      }
  }

  $("a").bind("click", okEvent );

  $("form").bind("submit", okEvent );

  // that's my adds that don't work
  $(":button").bind("click", okEvent );
  $(":button").bind("submit", okEvent );
  $(":button").onclick= okEvent;
}


// Wire up the events as soon as the DOM tree is ready
$(document).ready(function() {
    wireUpEvents();
});

Ключ, чтобы пометить событие как действительное до выгрузки. Я пытаюсь зацепить нажатие кнопок, но безуспешно. Селектор jquery работает нормально, я проверил, что $ (': button'). Длина равна> 0. Конечно, я что-то упускаю, но не могу найти это.

1 Ответ

2 голосов
/ 23 декабря 2010

Хорошо, вот несколько советов:

- замените три строки, которые вы добавили:

$(':button').click(okEvent);

-Не связывать событие отправки на входе Button, не путать с вводом ввода ( more ):

<input type="submit" value="Submit" />

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

$("form").bind("submit", okEvent );

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

...