質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

4回答

32960閲覧

ページ移動後に処理がしたい

kooya

総合スコア19

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2014/11/21 07:08

lang

1$(window).on('beforeunload', function() { 2 return '移動していいですか?'; 3});

これだと移動する前にしか処理できなくて

lang

1$(window).unload(function() { 2 alert('ページ移動'); 3});

これはうまく動かなかったんですが、
ページ移動するときに処理するにはどうしたらいですか?

-----追記--------

node.jsでゲームの開発をしています。

一対一の対戦で、ページを抜けたら抜けたプレイヤーは負けて、相手に勝利の告知をさせたいと考えています。

server側

lang

1socket.on('lose', function(data){ 2 socket.to(otherPlayer_id).emit('win'); 3 //勝敗による得点の計算 4});

client側

lang

1socket.on('win', function(){ 2 //勝利時の画面処理 3}); 4 5$(window).bind("beforeunload", function() { 6 return ページを抜けたら勝負に負けます。よろしいですか? 7}); 8 9function lose(){ 10 sokcet.emit('lose', data); 11}

プレーヤーがページから離れようとして、「ページを離れる」ボタンを押した時に関数loseを実行したいと思っています。良い方法ありませんか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

ページ遷移してしまったらその画面から制御が外れてしまうので、何もできないのではないでしょうか?
もし何かしたいのであれば、遷移先の初期表示の方に仕込む必要があるのではないかと思います。

投稿2014/11/21 07:41

TaMaMhyu

総合スコア1356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaMaMhyu

2014/11/24 09:01

そもそも何をしたいのかがわからないと適切な回答は得られません。
kooya

2014/11/24 09:46

そうですね。すみません。 追記したのでよろしくお願いします。
TaMaMhyu

2014/11/24 10:22

強制的に閉じられたり、通信が途絶した場合まで考慮する必要があるのであれば、クライアント側からの定期的な通信で、サーバ側のタイマー処理が必要になると思います。
guest

0

非常な雑なコードですが

lang

1(function (){ 2 function setLoseAlertEvent (){ 3 removeLoseAlertEvent(); 4 alert("Your defeat..."); 5 } 6 function removeLoseAlertEvent (){ 7 removeEventListener("blur",setLoseAlertEvent,false); 8 } 9 addEventListener("blur",setLoseAlertEvent,false); 10}());

こういう処理でしょうか?

lang

1(function (){ 2 var newWindow=window.open(""); 3 newWindow.document.write("<script language='javascript'>alert('Your defeat...')</script>"); 4 newWindow.document.close(); 5}());

もしくはこういう類いですかね?
見当違いなら申し訳ないです。

投稿2014/12/12 07:17

Cf_cwd

総合スコア730

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

今更ですが、socket.ioを使っているのであれば、サーバ側でdisconnectで処理をすればいいのではないでしょうか・・・?

投稿2014/11/26 00:57

k.tada

総合スコア1679

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kooya

2014/11/26 01:00

たしかに!やってみます。
guest

0

TaMaMhyu さんの回答にあるように

... 遷移先の初期表示の方に仕込む必要がある...

と思います。

ページ遷移関係のイベントについての情報を紹介します。

... jQuery unload()を使ってできるようなのですが なんとjQuery 1.8で廃止に ...

投稿2014/11/24 01:16

katoy

総合スコア22322

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kooya

2014/11/24 06:03

遷移先が特定されていなく、「ページを移動する」のボタンを押した時にある処理を実行したいのですが、やはりできないでしょうか?
TaMaMhyu

2014/11/24 06:07

そういうことであれば、専用の画面を間に用意して、リダイレクトするなどの対応方法になる気がします。
kooya

2014/11/24 07:57

具体的に、ユーザーが「戻る」「更新」ボタンをおした時、またはタブを閉じた時に処理をさせたいので、遷移先が自分の管理するページじゃない時に間にページを挟むにはどうしたら良いですか?すいません。いまいち想像できません。
katoy

2014/11/24 08:13

"page 移動後の処理" ではなく、あくまでも "page 移動前の処理" になりますが、 こんな例をみつけました。 - JavaScriptで前ページから受け取ったパラメータ先へリダイレクトする [http://www.nk0206.com/life/2014/04/js-redirect.html] 本当に page 移動後に処理を組み込む必要があるケースがあるのですか? 自分で作っているサイト内の任意のページに ページ表示前に処理を組み込むということなら、onload イベントで処理を 組み込むことは可能になります。 サイト外のページへの移動後に処理を組み込むことは セキュリティの面からも無理なのではと思います。
TaMaMhyu

2014/11/24 08:56

すべてのパラメータをスルー処理するための画面を用意して、遷移先をすべてそこに変えて、パラメータとして元の遷移先URLを追加で渡すような形になると思います。 ただ、さすがにブラウザのタブやウィンドウを閉じた場合にその先を処理するのは無理です。この場合は直前の処理で実装する方法を検討する必要があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問