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

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

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

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

Q&A

解決済

2回答

4416閲覧

javascriptでページに変更があれば再読込したい

midokuribotowne

総合スコア0

JavaScript

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

0グッド

1クリップ

投稿2020/04/26 02:23

編集2020/04/26 06:02

javascriptでページに変更があれば再読み込みをしたいです!
ですが、ifなどでやっても#documentがついてきてるせいで毎回再読込してしまいます
方法を教えて下さい。
コードは

javascript

1function ajaxUpdate() { 2 url = location.href; 3 var ajax = new XMLHttpRequest; 4 var element = document; 5 ajax.open('GET', url, true); 6 ajax.onload = function () { 7 console.log(document.body.innerHTML); 8 console.log(ajax.responseText); 9 if (ajax.responseText != element){ 10 console.log("変更あり"); 11 window.location.reload(true); 12 } 13 setTimeout(function () { 14 ajaxUpdate(); 15 }, 10000); 16 }; 17 ajax.send(null); 18} 19window.addEventListener('load', function () { 20 setTimeout(function () { 21 ajaxUpdate(); 22 }, 10000); 23});

です
なお、アクセス先はphpのため、1時間に1回変更が加わります。
一応動作するよう、scriptタグのsrcで読み込む際に、ver=1.0を指定しております。
phpで作成したチャットサービスを運営しております、荒らしがきた際に、自動でブロックされるのですが、そのあと、自動で再読み込みをしないと送信できてしまします。
そのため、ブロックされていればアクセス不可能のページが表示されますが、再読込した場合のみです。

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

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

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

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

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

m.ts10806

2020/04/26 04:06

意味が分からないです。 「変更」ってなんでしょう 自身が試したコードでも提示されればまだ推測もできないことでもないのですけど。 質問は編集できるので適宜ご対応ください
guest

回答2

0

ページに変更があれば

この条件をどのように認識するのか、が鍵になるかと思います。

  • 生成されたDOMをすべて読み込み、比較する。
  • ページの動的更新時をトリガーにする。

認識方法が定まれば、
例えばJavaScriptにて外部JavaScriptファイルを読み込むことなどで実現可能です。

JavaScript

1if(条件) 2{ 3 var script = document.createElement('script'); 4 script.src = "import.js"; // 読み込ませたいJavaScriptファイルへのパス 5 document.head.appendChild(script); // headに<script src="import.js"></script>を生成 6}

投稿2020/04/26 03:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

自己解決

最終的に、ajaxで最新のページを10秒に1回取得するようにし、比較して、変更があればlocation.reloadを実行するようにしました。
ありがとうございました。

投稿2020/06/05 03:55

midokuribotowne

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問