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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

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

jQuery

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

Q&A

2回答

508閲覧

ウィンドウにカーソルが存在することを検知する方法はありますか?

massuguda

総合スコア23

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2019/07/09 22:24

###実現したいこと
ブラウザの変更を検知したいです。

たとえばタブの変更ならばvisibilitychangeで検知できますよね。

しかし、2つのブラウザで同じサイトが表示中(タブ選択中)なときに、アクティブなブラウザを変更しても、visibilitychangeではそれを検知できませんよね。

もしそれが検知できればベストです。

###代替手段として実現したいこと
しかしできなそうなので、代替手段として「ブラウザにカーソルが乗ったとき(スマホなら指が乗ったとき)」というのを検知できればと考えました。

これならば、アクティブなブラウザを変更して、それを操作しようとしたときに検知できるので、まぁ、ぎりぎりかなと。

このような方法はありますでしょうか?

###なぜ実現したいのか
ちなみにそもそも目的は、一方のブラウザで変更したデータを、もう一方にも反映させるためです。

そのために下記➁と➄での検知が必要だと考え、質問致しました。

全体の流れとしては、

➀:Chromeを非アクティブにしたら
➁:それを検知してその時間をajaxで登録して
➂:Firefoxをアクティブにして何かデータを更新して
➃:Chromeをアクティブに戻したら
➄:その変更を検知して➀と➂の時間を比べて、
➅:もし➂の時間が後なら(Chromeで更新されてないデータがあるなら)、Chromeでサイトを再読み込みして、最新状態に保つ!

のような機能をイメージしています。

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

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

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

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

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

guest

回答2

0

双方向通信ですかね。
ASP.NET なら SignalR で比較的簡単に実現できます。
https://developer.mozilla.org/ja/docs/Web/API/WebSockets_API

投稿2019/07/10 01:59

x_x

総合スコア13749

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

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

massuguda

2019/07/10 16:00

簡単な流れでいいので、もう少し教えていただけませんでしょうか?双方向通信ってチャットくらいしかイメージできず、それが本件にどうかかわっていくのか掴めないレベルです。
x_x

2019/07/11 00:20

データの更新があったら全端末に更新をかけるということです。
massuguda

2019/07/11 20:32

すみません、「データの更新」とは質問でいう「ブラウザ変更」のことですよね?どうやって検知するのですか?
x_x

2019/07/12 00:47

サーバー側のデータの更新ですよね? 再読み込みで最新状態が取れるならそうだと考えましたが
massuguda

2019/07/12 10:29

サーバー側のデータの更新でしたね。失礼しました。で話を戻しまして、本件にどうかかわってくるかについてですが、 「たとえば双方向通信として有名なcometの場合、PHPをループさせた状態で待機して、サーバーに更新があればループをやめて端末を更新する」という流れになるじゃないですか? このようなご説明でもって、仰るASPNETとやらを教えていただけませんでしょうか?お手間とらせてすみませんが。
x_x

2019/07/16 08:26

自動的に複数の基盤技術が使われるためどれとは言えないです。 リンク先にもあるし、検索すれば出てくるので調べてみてはどうでしょうか? https://qiita.com/mash0510/items/a36f4d341edc50064d90 いずれにしても ASP.NET でないなら使えないです。
guest

0

これという策が思いついていない中ではありますが、
もしかしたらこうやったらできるかも?という可能性のみのヒント回答です。

カーソル位置を把握する方法はあります。

JavaScriptはイベント駆動ですので、「押された」とか「変わった」とか「読み込まれた」とかの何かしらのアクションが必要です。

mousemoveイベントはウィンドウ内にないと拾えません。

ですので、例えばsetInterval()で監視しておき、一定期間「mousemoveイベントが起きていない」のを察知することを以て「今はウィンドウ内にカーソルがない」と判断できるかもしれません。

ただ「ウィンドウ内にあるけど全く動かしていない」のと判別する必要があります(ここが難しそう)

あと、要件によってはdocument.hasFocus()とか使えるかも。

投稿2019/07/10 00:40

m.ts10806

総合スコア80850

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

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

massuguda

2019/07/11 20:32

カーソル位置からなんとかできるかもしれませんね。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問