0

ページの終了をトリガーした要素を見つけようとしています。彼らが a href をクリックしたとしましょう... JS によって開始された場所の変更は、別の戦いのために残します。終了する前に何らかの処理を行いたい (つまり、アプリの状態を保存する)。

私が試したこと:

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

$(this) も "e" (イベント) も、それを引き起こした要素を参照していません。

  • $(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 に答える