【Salesforce】Visualforce内のjavascriptが動かない

【Salesforce】Visualforce内のjavascriptが動かない

Visualforce内でjavascriptによる動作を記述していたのですが、突然動かなくなったと連絡がありました。

ソースを見てみても、特に修正があった痕跡はありませんでした。

しばらく調べてみると、原因が分かりました。

問題が発生していたjavascriptのイメージです。

function test(){

    var dispText = '{!$Label.DISP_TEXT}';
    alert(dispText);
}

javascriptの内部でカスタム表示ラベルを使用していることが分かるかと思います。

ここで気がついた方は察しが良いですね。

実際に展開されたHTMLはこんな感じです。

function test(){

    var dispText = 'It's a Pen';
    alert(dispText);
}

カスタム表示ラベル内にシングルクォートが入っていました。

これにより、文字列を表すシングルクォートと文字列中のシングルクォートによってjavascriptがうまく認識されていませんでした。

文字列をダブルクォートで表すだけでも解決できるのですが、根本的な解決にならないので数式を使用しました。

function test(){

    var dispText = '{!JSENCODE($Label.DISP_TEXT)}';
    alert(dispText);
}

「JSENCODE」という数式を使用しました。

https://help.salesforce.com/articleView?id=customize_functions_i_z.htm&type=0#JSENCODE

javascriptを使用する際に、安全でない文字列を符号化してくれるそうです。

自分で作る必要がなかったので便利でした。

今回の場合はこんな感じです。

function test(){

    var dispText = 'It\'s a Pen';
    alert(dispText);
}

多言語化する際にはカスタム表示ラベルを使用することが多いでしょうから、注意しなければいけませんね。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です