2012-01-30 18 views
0

ページ終了を引き起こした要素を見つけようとしています。彼らがa hrefをクリックしたとします...私は別のバトルのためにJSが開始した場所の変更を残します。私は終了する前に(つまり、アプリケーションの状態を保存する)いくつかの処理を行いたい。私が試した何ページの終了をトリガーする要素

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

どちら$(この)も "E"(イベント)は、それを引き起こした要素を参照します。

  • $(これは)何も
  • されず、 "e" は、空のオブジェクト "c.Event"

答えて

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'); 
     } 
    }); 

}); 

theeseで試してください。 :

<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

unloadとbeforeunloadがあまりにも奇抜であったため、このバリエーションがありました – mondo

+0

はい、ブラウザがアンロード/ beforeunloadイベントをスキップすることがあり、独自のボックスなどを使用したい場合があるからです。 – siniradam

0

JavaScriptのイベントは "onBeforeUnload" であり、その対応するjQueryのイベントは 'beforeunload' さを印刷します:

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

EDIT -

どの要素がURL変更を引き起こしたかを判断する唯一の方法は、ページ上のすべての要素をフックすることです。例えば:あなたのロジックを実行するためにbeforeUnloadで - - などhrefdata()またはhtml()

var lastElementClicked; 

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

はその後、lastElementClickedオブジェクトの属性を使用することができます。

+0

うんは、あまりにも1が、何らかの理由で、それはので、私は戻ってちょうどアンロードに行きませんし、開始要素(すなわち、「リンク」) – mondo

+0

@mondoにまだスコープ二回イベントを起動することを試みました更新された回答をご覧ください。 –

+0

ええ、私は以前考えました。少し清潔なものを望んでいた。これを試してみましょうが、ポストを開いたままにしておくと、誰かがイベントオブジェクト自体でそれを行うための極秘方法を知っていることを期待しています。 – mondo

関連する問題