какой элемент вызывает выход страницы - PullRequest
0 голосов
/ 30 января 2012

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

Что я пробовал:

$(window).bind("unload", function(e) { console.log("====EXIT===="); console.log($(this)); console.dir(e); } );

Ни $ (this), ни "e" (событие) не ссылаются на элемент, вызвавший его.

  • $ (это) - ничто
  • и "e" печатает пустой объект "c.Event"

Ответы [ 2 ]

0 голосов
/ 30 января 2012

Я полагаю, что этот будет работать для вас.

$(document).ready(function(){

    $('a').click(function(event){
        var pageUrl = $(this).attr("href");
        if(pageUrl.indexOf('google.com') == -1 && !$(this).attr("rel") && pageUrl.indexOf('javascript')==-1){
            //only your domain, lightboxes, and javascripts, otherwise cancel event.
            event.preventDefault(); 
            console.log('sorry dude no another site');
        }
    });

});

Попробуйте с этим;

<a href="http://google.com">google</a>
<a href="http://yahoo.com">another site</a>
<a href="javascript:alert(1)">alert</a>
<a href="http://www.gravatar.com/avatar/b46c1b6ff31e665600a62482f197622f?s=32&d=identicon&r=PG" rel="ligthbox">image</a>
0 голосов
/ 30 января 2012

Событие JavaScript - "onBeforeUnload", а соответствующее событие jQuery - "beforeunload":

$(window).bind('beforeunload', function() {
  confirm("You know you're leaving this page, right?");
});

РЕДАКТИРОВАТЬ -

Единственный способ определить, какой элемент вызвал изменение URL-адреса, - перехватить все элементы на странице. Например:

var lastElementClicked;

$('a').click(function(){
  lastElementClicked = this;
});

Затем вы можете использовать атрибуты lastElementClicked объекта - такие как href, data() или html() - в beforeUnload для выполнения вашей логики.

...