【PHP+javascript+css+cookie】jsを使った文字サイズ変更ボタンでサイズを変えてからページ遷移すると、一瞬元のサイズで表示されてから変更後のサイズになります。一部PHPでヘッダ等を読み込んでいて、その部分が特に顕著です。jsは、フォントサイズ指定の違うCSSのクラスを振り直し、cookieに保存しているだけです。ページ遷移時にcookieからクラスを読み出すので遅延が発生するのだろうと思うのですが、ちらつかせない良い方法は無いでしょうか。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/02/07 00:03:41
  • 終了:2011/02/07 11:32:08

ベストアンサー

id:asuka645 No.1

あすか回答回数856ベストアンサー獲得回数972011/02/07 07:31:20

ポイント60pt

実際にソースを見てみないと何とも言えません。

まず、PHPの役割がよく分かりません。


もしcookieにCSSのクラスを丸ごと保存しているのでしたら、cookie自体はHTMLリクエストの最初に読み出されていますが、既存CSSの反映を行って(元の文字サイズ)、JavaScriptがcookieから読み取った文字サイズの反映を行う順序になるので、若干タイムラグが発生します。


もしそうなら、根本的な解決方法としては、ページ遷移した時にPHPで文字サイズを取り出し、インラインCSSで反映してあげた方がいいでしょう。PHPの処理は、HTML,CSS,JavaScriptに優先しますので。

id:k_gobo

> PHPの処理は、HTML,CSS,JavaScriptに優先しますので。

なるほど! それでやってみます。ありがとうございます!

2011/02/07 11:31:47
  • id:windofjuly
    うぃんど 2011/02/07 01:03:46
    前回の $elm[0] に引き続き「他ユーザーの設定による回答拒否」によって回答権利がありません(歯がゆいのですが仕様ですからどうしようもないですね)のでヒントコメントだけ残していきます
     
    (1)javascriptでクッキーを読み込んで変更するかぎりはチラツキをなくす方法はありません(画面表示とjavascriptの動作は非同期のため、フォントサイズを変えてから画面表示をはじめるということは出来ないからです)
     
    (2)クッキー+javascriptで行いたいのであれば、まずは白紙のページを表示して、javascriptで非同期通信を行ってページ本体を後から読み込むなどのマニアックな方式を取らざるをえません
     
    (3)javascriptを使ってクライアントサイドで大きさを変えるのではなくて、呼び出されたphpのほうで「クッキーを読み取って、cssの振りなおしを行う」という方式にすればチラツキは起きようもありません
  • id:sayo213sayo
    コメント荒らし キタ━━(━(━(-( ( (゚∀゚) ) )-)━)━) ━━ !!!!!
     
    拒否られているのにコメント欄に回答を投稿しようという傲岸不遜
    他の回答者が投稿しにくくなることに対してはお構いなし
  • id:k_gobo
    >windofjuly氏
    すみません、「他ユーザーの設定による回答拒否」というのがどこでどう設定するのかわからないんです。
    (いや、調べればいいんですけど、質問するときはだいたい時間ないもので……)
    PHPでやってみます。
  • id:windofjuly
    うぃんど 2011/02/07 12:44:37
    設定は下記から行いますが、不適切な回答者も呼び込んでしまう可能性もあるため、確認にとどめおき設定変更はしないほうが良いです
    (ほんとに歯がゆいです)
    http://q.hatena.ne.jp/k_gobo/config
  • id:sayo213sayo
    http://q.hatena.ne.jp/1297004618
    コメント荒らし再び キタ━━(━(━(-( ( (゚∀゚) ) )-)━)━) ━━ !!!!!
     
    自分のために質問者の拒否設定を変えさせようというワガママぶり!!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません