教えてください。
画面をリサイズすると画面再表示するようにしたいのですが、
下記のソースでは
IE8で無限ループになります。
どこがおかしいのでしょうか?
どのように直せばいいのでしょうか?
jQuery(document).ready(function () {
var timer = false;
$(window).on("load resize", ReLayout);
function ReLayout(event) {
var _width = $(window).width();
var winWidth_resized;
if(event.type == 'resize') {
if (_width > 767) {
if (timer !== false) {
clearTimeout(timer);
}
timer = setTimeout( disp, 200);
}
}
}
function disp(){
location.href = location.href;
}
});
No.1ベストアンサー
- 回答日時:
通常のブラウザはリサイズすればレイアウトし直すと思いますので、何をなさりたいのかよくわかりませんが…
HTMLのload時に条件判定でdisp()が実行されるような状態の時は無限ループになる可能性があります。
個々のブラウザの挙動を確認してはいませんが、location.href = location.href;でリロードされるようなブラウザであれば、ロードする毎に再ロードすることになるのでは?
簡略化すれば以下のスクリプトとほぼ同じになるので…
window.onload = disp;
load時のイベント処理として実行するのをやめれば、とりあえず無限ループにはならないと思いますが?(リサイズ時のみ動作するようにするという意味です)
しかしながら、そもそもが再読み込みする必要が無いのではないかと思いますけれど…
この回答への補足
回答ありがとうございます。
カルーセルスライダーを使っていたのですが、
画面を小さくしたときにした画面処理が
画面を大きく戻したときにどうしても元に戻らず
強制的にリロードして戻していました。
で、なぜかIE8だけ無限ループになっていました。
おっしゃるとおり
load時にはいりませんね。
ただ、load時を外しても
画面スクロールのたびに
リロードが走ってしまい、
ページ下に行けない状況になってしまいました。
IE8のみリロードしないという逃げ方しかないのでしょうか?
No.2
- 回答日時:
ANo1です。
>画面スクロールのたびにリロードが走ってしまい~
普通はスクロールでリサイズのイベントが発生するとは思えないのですが…?
どこか他のところで、スクロールイベントが発生した際にdisp関数を呼び出している可能性が高いのではないかと想像しますが、そのようなことはありませんか?
>カルーセルスライダーを使っていたのですが、
>画面を小さくしたときにした画面処理が
>画面を大きく戻したときにどうしても元に戻らず
>強制的にリロードして戻していました
どのようなライブラリか不明ですが、内部の変数等の値がそのまま残っている可能性が高いと思います。
もしもユーザ用にAPIが解放されているのなら、リサイズ時に再初期化してあげれば、リロードする必要がなさそうに思いますが…
あるいは自作のものなら、そのように改造するか表示の際に都度サイズを取得するような方法に変えてあげれば、そのままでリサイズに対応できるようになると思います。
お返事遅くなりました。
ご回答いただきましてありがとうございました。
ちょっと、仕様から見直しということになってしまいました。
またお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのレスポンシブが綺麗に動かない 3 2022/06/21 11:08
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Java] Edgeでのアドレスバー非...
-
同じページをブラウザで複数開...
-
ポップアップウインドウの高さ...
-
親ウインドのASPをリロードさせ...
-
呼び出されたページを閉じ、呼...
-
ツールバーやステータスバーな...
-
イメージマップでリンク先のウ...
-
window.open("about:blank")
-
Javascriptでの小画面表示を閉...
-
window.openで子画面を開いた後...
-
画面を閉じる(×ボタンやタスク...
-
リロードさせないワザ
-
window.openでフルスクリーン表示
-
alertの最前面表示
-
window.open()で幅指定の際、ウ...
-
閉じた後のwindow.closed検知
-
サブウィンドウを常に最前面に...
-
ブラウザ Chromeを使っていて、...
-
マイページはどこを開くの
-
ウインドウを毎回同じ位置、大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[Java] Edgeでのアドレスバー非...
-
同じページをブラウザで複数開...
-
ブラウザ Chromeを使っていて、...
-
画面を閉じる(×ボタンやタスク...
-
window.open("about:blank")
-
onclickでのページ内移動
-
サブウィンドウを常に最前面に...
-
opener.focus();が利かない
-
子画面を自動で閉じた後、親画...
-
window.openで子画面を開いた後...
-
親ウインドのASPをリロードさせ...
-
alertの最前面表示
-
子画面へデータを渡したい!
-
ツールバーやステータスバーな...
-
MM_openBrWindowとwindow.open
-
window.openでフルスクリーン表示
-
ポップアップウインドウの高さ...
-
呼び出されたページを閉じ、呼...
-
閉じた後のwindow.closed検知
-
「処理中」表示
おすすめ情報