• 締切済み

jqueryでアクセス時一度だけリロード

Firefoxで別ページからアクセスした際にウインドウの位置がずれないようにする対策で、 アクセス時に一度だけリロードするようプログラムしました。 if($.cookie("access") == undefined) { alert("1"); $.cookie("access","true"); setTimeout(function(){ var url = location.href; location.href = url; },300); } else { alert("2"); $.removeCookie("access"); } jquery.cookieを使って上記のように実装したのですが、 location.hrefした後にalert("2")に入らない状態です。 現状ですと、2回URLを手動で叩かないと、alert("2")に入らない状態で、 一度のアクセスでalert("2")に入りつつ、2回目のアクセスでcookieを削除できればと思います。 cookieを使わない方法でももちろん大丈夫なのですが、 対策方法がお分かりいただけましたらご教授のほどよろしくお願いします。

みんなの回答

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.1

単純に、上記JavaScriptを動く状態にしてサーバー上にアップして動かすと、1→2となりましたよ。FireFoxでもChromeでも。ご提示のコードと別のところに問題があるのかもしれません。 あまり関係ありませんが var url = location.href; location.href = url; のところは location.reload(); の方がいいと思います。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> </head> <body> <script> if ($.cookie("access") == undefined) { alert("1"); $.cookie("access", "true"); setTimeout(function() { var url = location.href; location.href = url; }, 300); } else { alert("2"); $.removeCookie("access"); } </script> </body> </html>

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 1回だけリロードしたい

    開いたときに1度だけリロードさせたいのですが、たのページを参考に <script language="javascript"> <!-- if ( location.search.indexOf("1") == -1 ) { setTimeout("_reload()",1000); } function _reload() { location.href = location.href + "?1"; } //--> </script> を入れてみたのですが、リロードはされるものの、いわゆるブラウザの「更新」ボタンとは違うらしく、POSTで送られてきたデータを破棄した状態でリロードされるため、データの取得ができず困っています。 データを保持したままのリロード、つまりブラウザの「更新」ボタンのようなリロードを1度だけさせるにはどうしたらよいか教えてください。

  • cookie.jquery.jsでのcookie

    cookie.jquery.jsでのcookie取得について 現在、cookie.jquery.jsでcookieを以下のように取得しています。 $(window).load(function(){ $.cookie("access",$('body').addClass('access'));}) たとえば、サイトを表示して10秒後にcookie取得したいと思い、setTimeoutを使用すれば良いと思ったのですが、うまく動作しませんでした。 このような使い方はできないのでしょうか?

  • jQuery POST送信後のページ更新

    いつもお世話になっております。 jQuery+PHPにて、POST送信し、 戻り値の条件分岐でページを遷移させたり、 更新させたいと思っています。 ご教授願えないでしょうか。 index.php内 [ソース] $.POST('./search.php', {'code':12345'}, function(data){ if(data['type'] == '1'){ alert('見つかりません') location.href='./index.php'; } else if(data['type'] == '2'){ location.href='./edit.php; }, 'json' ); 見つかりませんのアラートを表示した後、 location.hrefだと、リロードする事なく。 またlocation.reloadにしても同様です。 $.POST外でlocation.reloadを指定すると リロードしてくれるのですが、$,POST送信してくれません。 もし不可能であれば、location.hrefで別のファイルを経由させて実施しようと思っています。 宜しくお願いします。

    • ベストアンサー
    • AJAX
  • JavaScriptでページを一度だけリロード

    とあるページにアクセスした際、JavaScript(jQuery)を使って一度だけページをリロードしたいと思っております。 <script language="JavaScript"><!-- function reload() { if (window.name != "test") { location.reload(); window.name = "test"; } } // --></script> 上記のような記述で試みたのですが、リロードしてくれません。 他に対応できる方法がございましたら、ご教授いただけますと幸いです。 以上、よろしくお願い致します。

  • リロード

    すいません。私JavaScriptはまったくの素人です。 あるページを5分ごとにリロードさせたくて、 <script language="JavaScript"> <!-- function reload_me() { document.location.reload(); setTimeout("reload_me()",300000); } //--> </script> <BODY onLoad="reload_me()"> と書いたところ、ロードしてくると同時に次のロードが始まってしまい、 300000という時間が全くきいてないような感じです。 (間髪を入れず無限にリロードが続いている状態) <body>のonLoadに書いてはいけないのでしょうか? それとも書き方がよくないのでしょうか? よろしくお願いします。

  • jqueryの構文について

    はじめまして、最近jqueryの勉強を始めました。 セレクタを変数で指定した場合の子要素の取得の仕方がわからず、困っています。 アドバイスいただけませんか? <html> <head> <title></title> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> <script> $(document).ready(function() { $("#next").click(function () { //下のように書いてみたのですが動きません。 var next_slide = $("#slide01").next(); $(next_slide).text("hoge");//これは動きます var img_url = $(next_slide > a).attr("href");//エラーを起こします alert(img_url); return false; }); }); </script> </head> <body> <ul> <li id="slide01"><a href="url01">スライド01</a></li> <li id="slide02"><a href="url02">スライド02</a></li> <li id="slide03"><a href="url03">スライド03</a></li> </ul> <a href="#" id="next">次へ</a> </body> </html> 要は次の要素の子要素にアクセスしたいのです。 ご教授のほどよろしくお願いしますm(_ _)m

  • jQueryで書き換えた要素のリセット

    jQueryで書き換えた要素のリセット 多分かなり初歩的な質問ですが、すいません。 jQueryでDOMの書き換えをやりたいのですが、その場合、書き換える前の状態にリセットするような関数?はありますでしょうか。 ないとすれば、書き換える前の要素を取り出しておいて、もう一度代入するような方法しかないでしょうか。 具体的にやりたいのは、ある条件の時のみaタグのURLを書き換え、条件から外れると元のURLに戻る、というものです。 素のhtml <a href="http://www.hoge.com/"></a> 条件を満たしているとき <a href="http://www.mogamoga.com/"></a> 条件を満たしていないとき <a href="http://www.hoge.com/"></a> 詳しい方おられましたら、どうかご教授ください。 よろしくお願いいたします。

  • jqueryのコードについて

    $(function () { $("親要素").click(function () { window.location = $(this).find("a").attr("href"); return false; }); }); 上記jqueryのコードで 子要素のリンクを親要素に適用させていますが、 子要素にリンクがない場合も親要素にリンクが適用され クリックすると・・・/undefined にとばされます。 子要素にリンクがない場合は 親要素にリンクを適用しなようにするには どうしたらいいでしょうか。 お願いいたします。

  • jqueryで、○○ is undefind

    WEBページを作成中です。あるエリア(例id="sub")のリンクをマウスオーバーすると、そこと関連の深いエリアへのリンク(例id="main"内のリンク)もハイライトする、といったことをやりたいので、 下記のようなコードを書きました。が、sub内リンクに触ると、 「this.product is undefined」となり、思うような動きになりません。 jsコード中にコメントにした部分を生かして表示すると、一応urlをalertするので、いいところまでは行っているように思うのですが。。。どなたか間違いをご指摘くださると助かります。よろしくお願いします。 ` <html> <head> <title>TEST</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript"> jQuery(function(){ //○○技術コンテンツ(グローバルナビを含む)にマウスオーバー⇒□□製品コンテンツがハイライト var tech_product = [ {tech:jQuery('a[href *="abcd"]'), product:jQuery('#main a[href *="ABCD"]')}, {tech:jQuery('a[href *="efgh"]'), product:jQuery('#main a[href *="EFGH"]')}, {tech:jQuery('a[href *="ijkl"]'), product:jQuery('#main a[href *="IJKL"]')}, {tech:jQuery('a[href *="mnop"]'), product:jQuery('#main a[href *="MNOP"]')}, {tech:jQuery('a[href *="qrst"]'), product:jQuery('#main a[href *="QRST"]')} ]; jQuery.each(tech_product, function() { //alert(tech_product[2].tech[0].href); this.tech.hover(function() { this.product.addClass('linkage'); }, function() { this.product.removeClass('linkage'); }); }); }); </script> </head> <body> <div id="sub"> <ul><li><a href="abcd/contents.html">abcdへ</a></li><li><a href="efgh/contents.html">efghへ</a></li><li><a href="ijkl/contents.html">ijklへ</a></li> <li><a href="mnop/contents.html">MNOPへ</a></li><li><a href="qrst/contents.html">qrstへ</a></li> </ul> </dv> <div id="main"> <ul><li><a href="ABCD/contents.html">ABCDも関係あるよ</a></li><li><a href="EFGH/contents.html">EFGHも関係あるよ</a></li><li><a href="IJKL/contents.html">IJKLも関係あるよ</a></li> <li><a href="MNOP/contents.html">MNOPも関係あるよ</a></li><li><a href="QRST/contents.html">QRSTも関係あるよ</a></li> </ul> </div> </body> </html> `

  • jQueryのpostで生成した要素を無限に有効に

    以下のような、jQueryのソースで、jQueryで生成したリンクを押すことによって$.postで生成したリンクで、.onを使って何回でもアラートが表示されるようにしたいのですが、1回目だけ出るのですが、それ以降は出ません。 何回でも出るようにするためには、どのようにすればいいですか。 また、postするデータmessage: 'message'も何回リンクをクリックしても、送信されるようにしたいです。よろしくお願いします。 $(function(){ $('#html').html("<a href='' onclick='return false' class='hello'>Hello</a>"); $('.hello').on("click", function(){ $.post("", { message: 'message', }, function(){ $('#html').html("<a href='' onclick='return false' class='hello'>Hello</a>"); alert('hello'); }); }); });