0

我试图找到触发页面退出的元素。假设他们点击了一个 href……我将把 JS 发起的位置更改留给另一场战斗。我想在退出前做一些处理(即保存应用程序的状态)。

我试过的:

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

$(this) 和 "e" (event) 都没有引用导致它的元素。

  • $(this) 什么都不是
  • 并且“e”打印一个空对象“c.Event”
4

2 回答 2

0

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对象的属性(例如hrefdata()html()beforeUnload来执行您的逻辑。

于 2012-01-30T18:51:44.037 回答
0

我认为这个对你有用。

$(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>
于 2012-01-30T19:33:42.253 回答