あなたの「必」の書き順を教えてください

インターネットエクスプローラーを使っています。
あるHTMLファイルの編集するので、

・テキストエディタで編集
・IEをアクティブにしてF5キーを押す

を繰り返しています。

この手間を減らすべく、

function init() {
setInterval("kousin()",2000);
}

function kousin() {
var y = document.body.scrollTop;
window.location.reload(true);
window.scrollTo(0,y);
}

としましたが、期待通りになりません。

そもそも、window.location.reload(true)を実行すると縦スクロール位置がホームポジションに戻ってしまい、F5を押した時と挙動が違うのですが、解決方法はありますか

A 回答 (5件)

ie8 ならば、No.3 案2 も可能です。



localStorage の各ブラウザ対応状況
https://developer.mozilla.org/ja/docs/DOM/Storag …

案1の場合の、具体的な実装方法
<script>window.onload = function(_) {
var m = /(?:^|;)MYSPECIALVAL_scrolltop=(\d+)/.exec( document.cookie );
if (m) {
_ ; window.scrollTo( 0, parseInt(m[1]) );
_ ; document.cookie = 'MYSPECIALVAL_scrolltop=;max-age=1';
}
setTimeout(function(){
_ ; var y = document.documentElement.scrollTop || document.body.scrollTop;
_ ; document.cookie = 'MYSPECIALVAL_scrolltop=' + y;
_ ; location.reload();
}, 3000);
}</script>

余談ではありますが

ie8 はすでにサポート対象外の製品ですので気をつけましょう
https://www.microsoft.com/ja-jp/windows/lifecycl …
    • good
    • 0
この回答へのお礼

返答ありがとうございます

</head>の前に、ご提示のコードを挿入したのですが、IEに変化がありません。


if (m) {
_ ; window.scrollTo( 0, parseInt(m[1]) );
_ ; document.cookie = 'MYSPECIALVAL_scrolltop=;max-age=1';
} else {alert(0);}
としても、何の表示もないので、クッキーが無効なわけでも無いようです。


未だにXPを使っているので、最新のIEがIE8なんです。
なお、このXPはネットに接続されていません。

お礼日時:2016/07/20 18:51

すでに回答は出ているので別案として。



ここのところ比較的浸透したSublime TextとChromeなどのブラウザを組み合わせることで、
保存時に即座に反映させることができます。

Browser Reflesh(保存時に自動更新)
http://number333.org/2013/11/07/sublime-text-bro …

LiveStyle(Chromeでリロードなしで即座にCSSを反映)
http://nelog.jp/livestyle

あと、Ogre7077さんの案1よりは案2のほうが実装が簡単かと思います。
下記作例です。

var reloadInterval = 10;//秒

//スクロール時
window.onscroll = function(){
//スクロール量を取得
var scroll_y = document.documentElement.scrollTop || document.body.scrollTop;

//ローカルストレージに保存
localStorage.setItem("_scroll_y", scroll_y);
}

//読み込み時
window.onload = function(){
//ローカルストレージから座標を取得
var scroll_y = +localStorage["_scroll_y"];

//スクロール
window.scrollTo(0,scroll_y);

//指定秒数後にリロードする
setTimeout(function(){ window.location.reload(); }, reloadInterval*1000);
}
    • good
    • 0
この回答へのお礼

返答ありがとうございます

私のPCにChromeは無いのですが、IE8で実行すると残念ながらlocalstorageが無いと表示されました。

お礼日時:2016/07/20 18:45

案1


現在の縦スクロール位置を cookie に保存し、
ページの onload 時に cookie があれば
スクロールしてから cookie の値を削除

案2
cookie ではなく localStorage を使う

案3
cookie でも localStorage でもなく
URL の末尾に #top999 などと付ける。
読みだしは location.hash から可能
    • good
    • 0
この回答へのお礼

返答ありがとうございます

IE8を使っています。恐らく

案1

は可能かと思うのですが、具体的にどうすればいいのでしょうか。

お礼日時:2016/07/18 16:26

その目的なら、指定したウィンドウにキーコードを送信するソフトを探した方がよいと思います。



下記をバッチファイルのループから実行すれば、目的の事ができると思います。

http://crimson.onmitsu.jp/soft/winkeysend/
    • good
    • 0

たぶん変数 y は値が設定されるだけで使用されない。


なぜなら、reload が実行された時点でページは新しいページに移動してしまい、それで元のページでの処理は終了してしまうから。

それに、ただ一定時間ごとにページを更新したいなら、JavaScript を使わなくても
 <meta http-equiv="refresh" content="秒数">
を head 内に書けばいい。
    • good
    • 0
この回答へのお礼

返答ありがとうございます

確かに自動更新されますが、やはり表示位置がページ先頭に戻ってしまいます。

お礼日時:2016/07/18 04:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報