2009年10月22日木曜日

safari3でjTemplatesがうまく動かない問題を解決

jTemplatesのsetTemplateElementメソッドを使ってテンプレートをロードする際、テンプレートに日本語が含まれていると、safari3では何も表示されないという問題に遭遇。
jQuery,jTemplatesのバージョンはそれぞれ現在最新の、1.3.2と0.7.8。

原因を調べるため、jquery-jtemplates.jsを見てみると、なんのことはない、replaceの正規表現がうまくマッチせず、テンプレート内のコメント部分の除去がうまくいってないだけだった。

具体的にはjquery-jtemplates.jsの中のjQuery.fn.setTemplateElement内にある下のコード。

s = s.replace(/^<\!\[CDATA\[([\s\S]*)\]\]>$/im,'$1');
s = s.replace(/^<\!--([\s\S]*)-->$/im, '$1');


これがsafari3だとうまくマッチせず、<!--と-->が除去されず、そのままコメント扱いになり、表示されていなかった。

とりあえず、上記コードを下記のように修正することで対応した。


s = s.replace(/^<\!\[CDATA\[/m, '').replace(/\]\]>$/m, '').replace(/^<\!--/m, '').replace(/-->$/m, '');

0 件のコメント:

コメントを投稿