Top / wikiについて / メニュー未展開問題  最終更新日: 2014-02-21 22:08

メニュー未展開問題

サーバ管理人がテスト中です。
Ajaxtreeコンテンツで作成している左側のメニューで、[+]押下時にサブメニューが展開されない不具合が発生した。
恐らくサーバ移転に伴うサーバ環境の変化が影響したと思われる。

判ったこと

  1. メニュー展開で要求するファイル名は元ファイル名(txt)と同名のEUC-JPコードで作成されている。
  2. でもJapascriptではUTF8コードで呼び出しているので展開できない。
    1. 大半のページが動作している(様に見える)のは、サーバ移転前に存在したUTF8コードのファイル名にアクセスしているから。
      そうでない場合もある?・・・なぞ!
  3. ページを表示した場合はメニューの内容も正常に表示される。
    なのでメニューで動作しているjavascript側のEncodeが怪しい。。。
    1. サーバ移行時にEncode関連で何らかの問題が発生した?

原因 2014/02/21

EUC-JPコードのファイルが作成されるが、jsはUTF-8コードで参照しているのが原因。

調査 2014/02/21

「mb_convert_encodingの問題とサニタイズ関数」でググレ!
変換ミスが起きている可能性が高い。
あと、ソースが最新でなかった・・・が、これは影響が無い模様。。。

対策 2014/02/21

hrefがEUC-JP名なのでjsを修正した。

  1. hrefの参照に切り替え
       var name = encodehref(a.href);
    // var name = encode(a.title);
  1. エンコード関数
    function encodehref(str) {
      var tmp = "";
      for (var i = 33, n = str.length; i < n; i++) {
        var c = str.charAt(i);
        if (c != "%") {
          tmp += c.charCodeAt(0).toString(16).toUpperCase();
        } else {
          tmp += str.substr(i+1, 2);
          i = i + 2;
        }
      }
      return tmp;
    }

今後

当分の間は手作業で更新します。。。orz
正常に動作するようになりました。

コメント

質問等ありましたら、理解できている部分についてお答えします。

コメントはありません。 コメント/wikiについて/メニュー未展開問題?

お名前:

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-02-21 22:08