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

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

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

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

Q&A

解決済

4回答

2153閲覧

「他のhtmlが使われているかの確認」は、できますか?

Takahito

総合スコア66

JavaScript

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

0グッド

0クリップ

投稿2016/06/22 22:23

編集2016/06/23 13:16

こんにちは。

質問内容ですが:
index.htmlファイル、indexplus.htmlファイルという2つのファイルが存在しているWebシステムがあった場合に、index.htmlを使用しているかどうかを確認することをindexplus.htmlから確認する方法は何かありますでしょうか?

開発に使用している言語はjavascriptです。

自分のひとつのアイディアとしては、jQueryのmousemoveをindex.htmlファイルの方で適用し、データベースにマウスを動かした時間をUPDATEで更新をしていく。
そして、そのデータベースの値をindexplus.htmlファイルで読み出して、その時刻などを元に使用状況を確認するというものがあります。

どれくらい実用的かはわかりませんが。。

方法を持っている人、仮説を持っている人がいらっしゃいましたら、ご教示いただきたいです。

よろしくお願い致します。

追記:
遅くなってしまいました。

「使用しているかどうか」ということは、
indexplus.htmlをとindex.htmlを同時に開いている場合に、indexplus.html内でindex.htmlが開かれていることを確認できる状態で、
「使用していない」場合は、
indexplus.html内で、index.htmlが開かれていないということを確認できる状態です。

追記:
この質問をした目的は、index.htmlからindexplus.htmlにメッセージを送り、それをリアルタイムで確認をしたいと考えているためです。

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

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

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

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

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

Zuishin

2016/06/22 22:26

index.html が変更できるなら、それはあるのでは?
Zuishin

2016/06/22 22:28

すみません、質問の意味を取り違えました。ユーザーの前に表示されているかどうかという意味ですね?
masaya_ohashi

2016/06/23 00:48

「使用しているかどうか」というのは、「見たことがあるか」でしょうか?indexplus側で、indexを最後に見た時間が欲しいということですか?
ttyp03

2016/06/23 00:56

「使用しているかどうか」が曖昧なので正確に教えてください。同じクライアントでindex.htmlとindexplus.htmlを同時に使っているか?あるクライアントで過去にindex.htmlを使ったことがあるか?それともシステムとしてindex.htmlを使うクライアントがいるのか?など。
guest

回答4

0

ベストアンサー

「使用しているかどうか」が「タブで開いている」「iframeで開いている」ということであれば、Web Messaging API を使って通信すればわかります。MessageChannel を通して通信し、返答があれば「使用して」います。

【MessageChannel() - Web API インターフェイス | MDN】
https://developer.mozilla.org/ja/docs/Web/API/MessageChannel/MessageChannel

【MessageChannel - JavaScriptで遊ぶよ - g:javascript】
https://javascript.g.hatena.ne.jp/edvakf/20100109/1263070731

【Web Messaging API を使ってみる - Qiita】
http://qiita.com/naoiwata/items/0a31d999b2dcd5098289

【Web Messaging - Web Messagingのサンプル - HTML5 JavaScript API入門】
http://javascript-api.sophia-it.com/reference/Web+Messaging%E3%81%A8%E3%81%AF

投稿2016/06/23 02:32

kei344

総合スコア69364

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

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

Takahito

2016/06/23 14:03

環境として、APIを使うことができないんです。
kei344

2016/06/23 15:50

何かと勘違いされていると思いますが、現在のモダンブラウザは全て対応している、ブラウザの機能のことです。 Takahitoさんの書かれている要件を一番単純に実装できると思いますので、リンク先を読んでみてはいかがでしょうか。
Takahito

2016/06/23 21:33

大変失礼致しました。 WebAPIと勘違いをしておりました。 これらを使用すれば、描いていることが実現できるかもしれません。 ありがとうございます!
guest

0

・Webシステムは基本的にステートレスであること
・Webブラウザは基本的に利用者の制御下にあること

以上を鑑みるに、(厳密な判定は)無理っぽい気がします。
なにをしたいのか分かりませんが、
より具体的なポイントが示されれば
また違ったアイデアが出てくるかも?

投稿2016/06/23 12:01

takasima20

総合スコア7458

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

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

Takahito

2016/06/23 14:02

何をしたいかということで追記させていただきました。 よろしくお願い致します
takasima20

2016/06/24 09:14

indexplus.html が index.html から open されたものだったら そんなに難しい話ではないような気もしますが、 そういう話ではないのでどうしようかってトコでしょか。 たぶん kei344さんのが可能性高い気がします。
guest

0

仕様としては
サーバ上における、
現時点での任意のファイルの実際のアクセス状況を知りたい。
その際、単純に開かれたままだったりアクセス履歴だけだと事実と離れてしまうケースが考えられるので、
実際にアクティブ(ユーザがそのページを使っている)かどうかも判別したい。
という感じかなと理解しましたが、認識の違いはありませんか?

であれば、概ね、仰っている方法で可能だと思います。

マウスの移動の他にもスクロールバーの移動や、タップ、テキスト入力、フォーカスの移動も捉えるとより精度が上がるかと思います。
あとは、現在見ているタブがアクティブかどうかも判定する
参考URL
とかでしょうか。

ただ、javascript(クライアントサイドで動作)だけだと、
サーバ上のデータベースにデータを登録することが出来ません。
そのため、
上のjavascriptから、データを受け取ってデータベースに記録する
index_activity_write.php みたいな、サーバサイドで動作するプログラムが必要になります。
*仮にPHPとしましたが、RubyやJava,Perl等選択肢はいろいろあります。
*リアルタイム性がいらないようなケースであれば、データベースを使わずに、適当なログ取得用のファイルにアクセスさせて、後からwebサーバのログから解析するような方法も考えられますね。

indexplus.html
についても、HTMLだとサーバ上のデータベースからの読み込みは出来ないので
(原理的には不可能ではないですが、実用的にならない)、
何らかのサーバサイド言語でデータベースからデータを取得する必要があります。

投稿2016/06/23 00:46

tanat

総合スコア18709

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

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

Takahito

2016/06/23 14:04

そうなんですね。。 javascriptだけでは難しいんですか。。
tanat

2016/06/23 14:24

追記を拝見しました。 他ユーザの状態ではなく、自身の状態だけ確認という事であれば、 LocalStrage経由で状態の共有は可能な気がしますね。 (確信は無いです) とりあえず状態の定義とかは後回しにして http://wp.tech-style.info/archives/742 あたりを参考にして単純にindex.htmlとindexplus.html間で情報の共有を試されてはいかがでしょうか。
Takahito

2016/06/23 21:38

LoclStrageというものがあるのですね。 ありがとうございます。 とりあえず、コードを書いてみて実現に向けて進めてみようと思います。
tanat

2016/06/23 21:40

はい。頑張ってください! kei344さんご提示の方法が多分一番正しいアプローチなので、そちらからアプローチされるのがよろしいかと思います。
guest

0

index.htmlのjsからデータベースへデータが入るのであれば、
indexplus.htmlにデータベースからデータを読み込むスクリプトを書けばいいのでは?
使用しているかどうかというのがよくわからない表現なので間違っていたらすみません。

投稿2016/06/23 00:23

Yasha_Wedyue

総合スコア830

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

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

Takahito

2016/06/23 14:05

そのようにすると、リロードしないとデータが読み込まれないという問題が起きてしまいます。。 ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問