by shigemk2

当面は技術的なことしか書かない

ページ移動時に何か処理を行う (Operaでも動く究極完全態を目指して)

特定のリンクに移動するときに、何かイベントを仕掛けることは出来ないだろうか。

例で言えば、正しく下のサイトのようにFBでページを離脱するときに現れるこのダイアログだろう。

例えば、以下のようなサイトだと、こんな風にコードを書けばいいことになってる。
ページを移動(離脱)するときにjQueryで警告を出す方法: 小粋空間

$(function(){
    $(window).on('beforeunload', function() {
        return '投稿が完了していません。このまま移動しますか?';
    });
});

これを改変して、

$(function(){
    $('a.hoge').click(function() {
        $(window).on('beforeunload', function() {
            $('a.hoge').css('background', 'red');
        });
    });
});

とかやると、ページ移動前に何かしらの処理をやってくれるわけだけれども、
残念なことにこのコードは、Operaだと動かない

なんてこった。どうしようかね。ってことで、代わりにlocation.hrefを使うことにした。

$(function(){
    $("a.hoge").click(function() {
            $('a.hoge').css('background', 'red');
        setTimeout(function() {
            window.location.href = 'リンクのURL';
        }, 300);
    });
});

こんな風に書けば、hogeクラスのaタグをクリックすると、なんかイベントを実行した後に、
リンクのURLに飛んでくれるんだ。

location.href(リンク)-JavaScript入門