
楽天ショップでJavaScriptを利用した開閉式のメニューを実装しています。
左サイドの「メンズ」「レディース」の箇所です。
http://www.rakuten.co.jp/magicmarket/
楽天の通常ページでは<Script>タグの記述ができない為、別サーバで作ったメニューをiframeで表示しています。
http://www.rakuten.ne.jp/gold/magicmarket/left.h …
iframeの使い方に無理があるのは承知ですが、楽天内では苦肉の策としてよく使われています。
メニューにはSlashdot Menuというこちらのスクリプトを使用しています。
http://www.dynamicdrive.com/dynamicindex1/slashd …
開閉状態をブラウザのcookieに保持しているので、デフォルトで開いた状態のものを一度閉じて更新すると閉じた状態で表示されます。
(ページ遷移しても同様です)
http://www.rakuten.ne.jp/gold/magicmarket/left.h …
firefoxなどで動作確認するとiframe内でも正常に動作しています。
http://www.rakuten.co.jp/magicmarket/
IEでも保持できれば完璧なのですが、iframe内のcookieを保持する方法はありませんでしょうか。
アドバイス頂けると助かります。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
恐らく、間接的には iframe にした事が原因ですが、根本は、別ドメインのクッキーの読み書きがセキュリティに引っかかったためかと思います。
書き込み :
document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/";
↓
document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toUTCString() + "; path=/magicmarket/; " + "domain=www.rakuten.co.jp";
又は、
parent.document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toUTCString() + "; path=/magicmarket/";
# "path=/" 楽天トップに直に書いて大丈夫なんですか?
読み込み
parent.document.cookie
ありがとうございます。
不具合の原因と実現したいことはまさにご指摘の通りです。
同一ドメイン内でiframeはOKでしたので別ドメインのcookie処理ということですね。
ちなみに解決にはなりませんがインターネットオプションのプライバシーを低レベルに下げれば動作しました。
sdmenu.jsを教えて頂いた通り記述してみましたが保持はできませんでした。
http://www.rakuten.ne.jp/gold/magicmarket/script …
やはり無理があるのでしょうか。
> # "path=/" 楽天トップに直に書いて大丈夫なんですか?
これはダメですね。何も考えずそのままUPしていました。
ご指摘ありがとうございます。
No.4
- 回答日時:
少し調べてみたのですが、サーバ側の設定を変更しないと無理みたいですね。
以前書いたコードは忘れてください。ごめんなさい。
No.2
- 回答日時:
同じくソースは見てませんが・・・
cookieの保存、読み出し部分でブラウザによる違いはあまりないように思われますが、どのような事象なのでしょうか?
ちなみに、Slashdot Menuのオリジナル版はもちろん作動していますが、IE6では、ご提示のメニューはどちらも作動していないようです。
Opera8ではメニュー部分そのものが、表示されないみたいです。
cookieではなく、このあたりに原因がありそうでは?
勘違いをしていたら失礼。
この回答への補足
オリジナル版をiframeで表示させてみました。
http://www.rakuten.ne.jp/gold/magicmarket/test.h …
メニューを閉じて更新すると開いた状態に戻ると思います。
スクリプト自体に不具合があるわけではないのですが、iframe内でもIEで状態を保持する方法があれば使い勝手が向上するのでとても助かります。
方法がなければきっぱり諦めます。よろしくお願い致します。
No.1
- 回答日時:
サイトやソースなどは見ていません。
キャッシュから読んでいたり、ブラウザの戻るボタンや進むボタンを使う場合などの場合、
windowの読み込み完了イベントが発生しないブラウザがあります。
Firefoxはバージョン2か3で発生するように変更されました。
Operaはonloadイベントを発生させない代わりに、初期化後の変数の値まで全てを保存していると思います。
それへの簡単な対処法で、
</body>の直前で<script>タグを使って、直接呼び出す方法があります。
<body onload="init();"><!-- これは呼び出されない -->
.....
<script type="text/javascript">
init(); // これは呼び出される
</script>
</body>
ご参考まで。
この回答への補足
ご回答ありがとうございます。
状態の保持はcookieのキャッシュを利用しているのですが、iframeを使用しない場合は正常に動作しますので、ブラウザの読み込み自体は問題ないと考えられます。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ブラウザ) IE・edgeで日増しに観られるサイトが減ってくる。 1 2022/10/04 22:40
- 格安スマホ・SIMフリースマホ スマホ機種交換及びLINEについて 4 2022/09/22 03:24
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Chrome(クローム) Cookieを削除 他サイトでの自動ログインなどの設定も削除されますか パソコン クロームです 1 2022/09/10 21:47
- SEO googleサーチコンソールで、重複URLが多数発生、その修正方法について 2 2023/06/23 16:15
- Chrome(クローム) Google Chrome の同期が必ず一時停止になってしまい困っています。 GoogleChrom 2 2023/02/04 16:45
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- au(KDDI) 特定の画面を見るとスマホが固まります ご覧頂き有難うございます。 特定のページを見るとスマホが固まり 1 2023/08/21 19:29
- Chrome(クローム) Google Chrome の同期が必ず一時停止になってしまい困っています。 GoogleChrom 1 2023/02/05 09:59
- デスクトップパソコン Google Chrome の同期が必ず一時停止になってしまい困っています。 GoogleChrom 1 2023/02/05 19:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Cookieの回数で閲覧制限、javas...
-
IEでiframe内のcookieを保持
-
ページ内文字列の置換について
-
ジャバスクリプトが無効になっ...
-
<a href="#" …>の意味を教えて...
-
マウスクリックした地点のテキ...
-
html メールリンクにて自動ファ...
-
window.openの後にエンコードを...
-
noscriptについて
-
ページ内、ピクセル移動でスム...
-
HTMLソースからURLだけを抜き出...
-
キーを押している間の時間を計...
-
背景設定で
-
リンクの表現
-
リンクに飛ばない・・・
-
スライド写真で2、3枚目をラ...
-
jQueryでdivごとリンクする際の...
-
メニューを作成しています。
-
function の return 値を表示し...
-
外部ファイル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ページ内文字列の置換について
-
JavaScriptでテーブルの内容を抽出
-
動的生成したscriptタグが実行...
-
CGIフォーム一定時間過ぎる...
-
gaiaxでJavascriptで記述した場...
-
promptを使用した年齢認証
-
JavaScriptが有効な場合のみ表...
-
ブロックされるのかされないのか?
-
Operaにおけるscriptのエスケー...
-
JavaScripty変数をHTMLで利用
-
外部jsからdocument.writeする...
-
location.hrefの使用方法について
-
特定のURLからの訪問者を入室禁...
-
JSによるリンク先の値の取得
-
plug-inが無い場合に他のページ...
-
javascriptでの大文字小文字の区別
-
スクロールしても画像・文字が...
-
*.jsをHTMLで読み込んでHTMLに...
-
明日の日にちを表示するときは
-
document.writeの文字列が実行...
おすすめ情報