我正试图找到触发页面退出的元素。假设他们点击了a href。。。我将把JS发起的位置更改留给另一场战斗。我想在退出前做一些处理(即保存应用程序的状态)。
我尝试过的:
$(window).bind("unload", function(e) { console.log("====EXIT===="); console.log($(this)); console.dir(e); } );
$(this)和"e"(event)都没有引用导致它的元素。
- $(这个)不算什么
- 并且"e"打印一个空对象"c.Event"
我相信这个对你有用。
$(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>
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;
});
然后,您可以在beforeUnload
中使用lastElementClicked
对象的属性(如href
、data()
或html()
)来执行逻辑。