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

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

ただいまの
回答率

88.23%

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

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,476

Takahito

score 66

こんにちは。

質問内容ですが:
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にメッセージを送り、それをリアルタイムで確認をしたいと考えているためです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Zuishin

    2016/06/23 07:26

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

    キャンセル

  • Zuishin

    2016/06/23 07:28

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

    キャンセル

  • masaya_ohashi

    2016/06/23 09:48

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

    キャンセル

  • ttyp03

    2016/06/23 09:56

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

    キャンセル

回答 4

checkベストアンサー

+4

「使用しているかどうか」が「タブで開いている」「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 23:03

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

    キャンセル

  • 2016/06/24 00:50

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

    キャンセル

  • 2016/06/24 06:33

    大変失礼致しました。
    WebAPIと勘違いをしておりました。

    これらを使用すれば、描いていることが実現できるかもしれません。

    ありがとうございます!

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/23 23:05

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

    キャンセル

0

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/23 23:04

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

    キャンセル

  • 2016/06/23 23:24

    追記を拝見しました。
    他ユーザの状態ではなく、自身の状態だけ確認という事であれば、
    LocalStrage経由で状態の共有は可能な気がしますね。
    (確信は無いです)

    とりあえず状態の定義とかは後回しにして
    http://wp.tech-style.info/archives/742
    あたりを参考にして単純にindex.htmlとindexplus.html間で情報の共有を試されてはいかがでしょうか。

    キャンセル

  • 2016/06/24 06:38

    LoclStrageというものがあるのですね。
    ありがとうございます。

    とりあえず、コードを書いてみて実現に向けて進めてみようと思います。

    キャンセル

  • 2016/06/24 06:40

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

    キャンセル

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/23 23:02

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

    キャンセル

  • 2016/06/24 18:14

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

    キャンセル

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

  • ただいまの回答率 88.23%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る