SafariでevalScriptsが動かない・・・
1年くらい前はAjaxやらDOM操作やらを駆使したWEBアプリにSafariを対応させようとすると、すぐに挫折していましたが、3.0.4にバージョンアップされて、意外とすんなり動作するようになった気がします。が、それでもまだちょっとハマってしまいます。
Ajaxで取得したHTMLテキスト内のscriptタグを実行するため、prototype.js(バージョンは1.6.0.2)のevalScriptsを使ってみたのですが、IE6や7、FireFox2.0では問題なく動作するのに、Safari3.0.4ではうんともすんとも動きません。スクリプトの先頭行すら実行されていないので、どうやらscriptタグの抽出あたりで失敗しているような感じ。Safariでは割りと文字コードの問題があるようなので、試しにscriptタグ内の日本語を取り除くとうまく動作しました。scriptタグ以外に日本語がある分には問題ないようですね、UTF-8だから?
で、どうしようか悩んだのですが、Unicodeエスケープシーケンス(\uと4桁の16進数で表現するアレ)で日本語を出力すると、Safariでも動くしIEやFireFoxでも問題ないようですので、この方法で対策することにしました。
今回はRuby on Railsフレームワークを使っているので、どこかの賢い人のコードを参考にさせて頂き、
def to_unicode(text)のような変換関数を用意して、evalScriptsで実行するscriptタグ内の日本語を片っ端からUnicodeエスケープシーケンスに変換しました。
utext = ""
text.unpack("U*").each {|num|
utext << sprintf("\\u%04x", num.to_i);
}
utext
end



XOOPSは現在、メジャーなオープンソースCMSツール(コンテンツ・マネージメント・ツール)のひとつです。PHPとMySQLさえあればとても簡単にインストールでき、手軽にポータルサイトが構築できます。実は