前回「FileMaker ハイブリッド開発01」で次回以降といった話を一つ。
このWebビューアを内包しているFileMakerのスクリプトを呼び出すときはFMP://プロトコルを使うと前回話しをしていましたが、注意点の一つとして、日本語文字、文字そのものに入ってはいけない文字の対応についてです。
結論から言うと、FMP://プロトコルのパラメータに入れるデータはURLエンコードが必要です。 理由は2つあって、1つは日本語文字などの2バイト文字があり得ることです。 そしてもう1つはWebの世界では当たり前なんですが、FileMakerでは意識する必要がなかった「サニタイズ」を行う為です。「サニタイズ」はFileMakerデベロッパーは聞き慣れない言葉ですが、要は送信する情報に <script> などの文字を入れて開発者が意図しない動作が行われることを防ぐために、それらの記号文字を別の文字に置き換えることです。
( ではサニタイズしなかったらどういう、どこまでマズイことになるか、FileMakerだったらどういう可能性がありえるか、はまた別の機会に。 )
JavaScriptでURLエンコードを使うには何種類かありますが、encodeURIComponent()関数を私は使ってます。 ですので、前回提示したサンプルソースは次のように書き換える必要があります。
修正前) <div onclick=”location.href=’fmp://$/test?script=sctest¶m=data’”>sctest act</div>
修正後) <div onclick=”location.href=’fmp://$/’ + encodeURIComponent(‘test’) + ‘?script=’ + encodeURIComponent(‘sctest’) + ‘¶m=’ + encodeURIComponent(‘data’)”>sctest act</div>
上記は’test’や’data’といった固定の文字なので修正前でも動作しますが、ユーザーの入力データが入っている変数だったりすることが多いと思うので常に入れておくように気をつけたいところです。 ではまた。