
No.7ベストアンサー
- 回答日時:
> これだと、いくらスクリプトを埋め込んでいても、更新されない可能性がありますかね?
はい、セッションクッキーはブラウザを終了するまで保持されるので、ブラウザは一度閉じないとだめです。しかも、クッキーをセットしたウィンドウだけでなく、同じブラウザのウィンドウは全て閉じないとクッキーが消えないことがあるようです。
親側での nWin.location.reload(true); でうまく行くようなら、こちらの方が面倒がなくていいでしょうね。
この回答への補足
ほんとうに何度もご回答ありがとうございます!
助かります。
念のため、子ウインドと更新させたいhtml、両方に組み入れて、テストをおこなってみたいと思います。
取り急ぎ、ご報告まで。
お礼遅くなりました。
ブラウザを一度終了させ再起動させたら上手く更新されているようです。
重くならないようであれば、最終的に子ウインドと更新させたいhtmlの両方に、ご教授いただいたスクリプトを組み入れて使いたいと思います。
このたびは、お付き合い下さって本当にありがとうございました。
大変、勉強にもなりました。
No.6
- 回答日時:
No.5 のお礼を読んだのですが、自動的にリロードしたいのって attention.html の方ではないのですか?この方法だと子ウィンドウを生成している方のウィンドウがリロードされてしまいますが・・・
それでよいのだとするとこれ以上は難しい気がしますが、先の指摘のように attention.html を自動更新したいのなら、No.5 のスクリプトを attention.html の方に記述すれば解決できるかも知れません。
また、attention.html は window.open で開いているので、生成部で
nWin = window.open("attention.html","","scrollbars=1,width=600,height=700");
nWin.location.reload(true); // この行を追加
としても同様に1回だけリロードされます。
※ただしこの方法だと、attention.html に直接アクセスされた時にはリロードされませんので、その可能性があるなら前述の方法の方がよいでしょう。
この回答への補足
はい、attention.htmlの内容を更新させたいわけです。
ちなみに、attention.html内にも、<SCRIPT></SCRIPT>で記述してあったのですが、同じく上手く更新されるときと出来ないときがありました。
>この方法だと子ウィンドウを生成している方の
>ウィンドウがリロードされてしまいますが・・・
あっ確かにそうですね。失礼しました。
attention.html直接アクセスは無いので、ご教授くださった方法で試してみたいと思います。
ちなみにひょっとしたら、いったんブラウザを終了させてから、再び起動し、該当部分をクリックし、子ウインド内を閲覧したときは更新されていたかもしれません。
更新されなかったときは、立ち上げたままのブラウザで、該当部分をクリックし閲覧したときだったような気がします。今思えばですが・・
これだと、いくらスクリプトを埋め込んでいても、更新されない可能性がありますかね?
No.5
- 回答日時:
URLにパラメータをつければ再読込するものと思っていましたが、htmlページではダメなのかも知れませんね。
もし、「location.reload() なら確実にリロードされる」のであれば、リロード済みチェックにセッションクッキーを利用すれば対処できると思います。
if (document.cookie.indexOf("reloaded") == -1) {
document.cookie = "reloaded";
if (document.cookie.indexOf("reloaded") != -1) {
location.reload(true);
}
}
・最初はクッキーに "reloaded" がないので、それをセットしてリロードします。
・リロード後(2回目)にはクッキーがあるのでリロードしません。
・ブラウザを終了すればクッキーはなくなるので、次回は「初回」と判定されてリロードされます。
ちなみに、クッキーの有無を二重にチェックしているのは、「JavaScriptは有効だけどCookieは無効」という環境(あまりないと思いますが^^;)でリロードしっぱなしになるのを防ぐためです。
クッキーの有効チェックは navigator.cookieEnabled でも可能ですが、これはサポートしないブラウザがあるので、「セットしたクッキーが見つからなければCookieは無効(有効の時だけリロード)」というチェック方法を採っています。
この回答への補足
どうもわざわざありがとうございます!
お教えいただいた方法で、今のところ上手くいっているようです。
もうしばらくいろいろな事例でテストしてみたいと思います。
取り急ぎにて。
ちょっとだけ文面を編集したときは上手く行くようだったのですが、数行追加したりしてちょっと多めの編集を行ったときには上手く更新されませんでした。
念のため、ブラウザのインターネットオプションの制限に引っかからないように、信頼済みサイトに登録(セキュリティ[低])してみて操作しています。
子ウインド生成のjavascriptのjsファイルに記述しても、子ウインド内に表示させているHTML内に直接記述しても、上手くいきませんでした。
参考までに、子ウインド生成のjavascriptは以下です。
ご面倒であければ、ご意見お聞かせくださるとうれしいです。
----------------------------------------
//★子ウィンドウ生成(記述前)//
var nWin;
var fFlag;
function MakeChildWindow()
{
nWin = window.open("attention.html","","scrollbars=1,width=600,height=700");
}
function FocusChild()
{
fFlag = fFlag ^ 1;
if (fFlag)
{
nWin.focus();
}
}
----------------------------------------
//★子ウィンドウ生成(記述後)//
var nWin;
var fFlag;
function MakeChildWindow()
{
nWin = window.open("attention.html","","scrollbars=1,width=600,height=700");
if (document.cookie.indexOf("reloaded") == -1) {
document.cookie = "reloaded";
if (document.cookie.indexOf("reloaded") != -1) {
location.reload(true);
}
}
function FocusChild()
{
fFlag = fFlag ^ 1;
if (fFlag)
{
nWin.focus();
}
}
No.4
- 回答日時:
No.2、3 の方法では「最初の1回だけリロード」することはできません。
リロードするとそのページの JavaScript も1から実行されるので、「ページ表示」→「location.reload() 実行」→「再読み込み」を繰り返してしまうからです。(ブリンクしているような感じになるのはそのためです。)
これを最初の1回しかリロードされないようにするには、q=844652 の No.2 のようにリロードしたことを示すダミーパラメータを用い、それをチェックしてリロードの要不要を判断するようにします。
if (location.search.indexOf("reloaded") == -1) // パラメータに reloaded がなければ、
location.search += (location.search ? "&" : "?") + "reloaded"; // つけて再読み込み
ところで、通常はページを開いた時には最新の状態が表示されるはずなので、開くと同時にリロード、というのは必要ない気がします。
必要になればコンテキストメニューやショートカットキーを使って更新できますし、それでは不親切と思われるならば <input type="button" value="更新" onClick="location.reload()"> のような更新ボタンを用意すればいいように思います。
この回答への補足
上手くいったと思い、下のお礼欄に書かせていただいた後で、再度、会社環境で実験してみましたが、やはり更新されませんでした。
右クリックの「最新の情報に更新」を行うと、子ウインド内は、ちゃんと更新されるのですが・・・
ちなみに、サンプル1のスクリプト改でも、同様にだめでした。
会社環境に問題があるのですかねぇ。。。
ちょっと、他の方法を模索してみたいと思います。
どうもありがとうございます!
確かに、教えていただいたANo.3の方法でも、ANo.2と同様に、子ウインドのタイトル(左上部分)が、タイトル名⇔読み込みHTML名の繰返しでブリンクしているようになり、子ウインド内には何も表示されませんでした。
ただ、ANo.3の方の参考URL先にあった、サンプル1のスクリプトを以下のように改良して用いたら、上手くいくのかな?・・・と思っていましたが、どうでしょう?
<SCRIPT Language="JavaScript">
<!--
function winEvent(theEvent){}
window.onload = winEvent;
// -->
</SCRIPT>
もちろん、leaz024さんにご教授いただいた方法で、上手くリロードされることは確認できましたので、実際はこちらを使わせていただきたく思っています。
>ところで、通常はページを開いた時には
>最新の状態が表示されるはずなので、
>開くと同時にリロード、というのは必要ない
>気がします。
私もそう思っていたのですが、自宅PCのブラウザで子ウインドを閲覧したら、特にスクリプトを組み込んでいなくても最新状態が表示されたのですが、会社PCのブラウザからだと、子ウインド内が最新になってくれませんでした。(会社環境はプロキシを経由しているせいなのかも・・・)
子ウインド自体、メニューを取ったデザインになっており、特に毎回内容に更新があるわけでもないので、閲覧ユーザー側に更新操作を意識させないで、最新表示されるようにしたかったのです。
また、子ウインド内には、利用規約などの重要事項を書いているので、その文章の添削を行ったときに閲覧ユーザー側には最新内容が伝わるようにしなければならなかったので、今回お教えいただいた方法は大変助かります。
No.3
- 回答日時:
<BODY onLoad='location.reload()'>
読み込まれた時に、1回実行されます。
onLoadは、自動的にフォームをサブミットしたり、JavaScriptを表示した時に1度実行する際、便利です(^^)
お役に立てれば幸いです。
参考URL:http://www.openspc2.org/JavaScript/ref/window/on …
No.2
- 回答日時:
「自動的にリロード」とは、そのページを開いたときにリロードするという意味で良いのでしょうか。
であるのならば、過去の回答に以下の回答があります。
http://okweb.jp/kotaeru.php3?q=844652
この回答にある
<script>location.reload()</script>
で対応できるはずです。
なお、一定時間毎に自動的にリロードするという意味であれば、#1の方の回答になります。
この回答への補足
ん~、用いてみましたが、小ウインド内が上手く表示されず、小ウインド自体がブリンクしているような感じに・・・
小ウインド自体、javascriptで生成しているのですが。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(お金・保険・資産運用) disney+の支払いはギフトカードを買ってするようにしてて、今日、支払おうと(更新する)を押したら 3 2022/11/01 18:48
- 教えて!goo グレード数 1 2023/07/30 09:37
- Windows Me・NT・2000 パソコン終了 4 2022/05/09 09:05
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Google Drive GooglePlay開発者サービスの更新方法 1 2022/11/18 10:39
- Excel(エクセル) Application.Volatile利用(excel2003) 1 2023/02/06 10:11
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Excel(エクセル) Powerクエリーの更新完了までの時間計測の方法? 2 2022/10/17 11:45
- Visual Basic(VBA) 【ExcelVBA】動的にボタン、ボタン名を生成できますか? 7 2022/04/08 12:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HP上のPDFファイルを保存禁止...
-
ユーザーが更新ボタンを押さな...
-
HTMLについて
-
プルダウンと入力を両方行う検...
-
二つのページを表示させる
-
ifraameでのランダム表示時に不...
-
該当ページに直アクセスさせな...
-
ランダムにページにアクセスしたい
-
<a href="#" …>の意味を教えて...
-
SCRIPT5007: 未定義または NULL...
-
別ファイルのfunctionの読み込み方
-
月ごとに表示するページを変える
-
jQuery LightBox Plugin動かず
-
アンカーをクリックしても遷移...
-
特定のウィンドウ名を持つウィ...
-
ホームディレクトリを示すチル...
-
ファイルのフォルダの階層の指...
-
フレームを跨ぐドロップダウン...
-
外部リンクはブラウザに依存する?
-
ワードプレスでjQuery 右から飛...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンと入力を両方行う検...
-
ユーザーが更新ボタンを押さな...
-
ウインドウを縮小しても文字を...
-
HP上のPDFファイルを保存禁止...
-
HTML5のcanvasで描画がされない
-
【SSI】include file、include ...
-
Html(表)のExcel出力
-
カウントダウンタイマー終了で...
-
ランダムにページにアクセスしたい
-
ifraameでのランダム表示時に不...
-
該当ページに直アクセスさせな...
-
「街」や「428」や「かまいたち...
-
VBAでIEの操作→サブウインド...
-
[html] リンク先のページのラジ...
-
index1.htmlからindex2.htmlに...
-
<iframe>内をリロードするたび...
-
メールフォームとかで確認画面...
-
Windowsログオンユーザの取得
-
SDカードに入れたjavascriptフ...
-
<a href="#" …>の意味を教えて...
おすすめ情報