描述
转义在JS中回显的文本字符串。它旨在用于内联JS(在标记属性中,例如onclick="..."
)。请注意,字符串必须在单引号中。这里也应用了‘js_escape’滤波器。
参数
- $text
-
(string) (必填) 要转义的文本。
返回
(string) 转义文本。
说明
有关转义和清理的更多信息,请参阅数据验证。
源码
更新日志
版本 | 描述 |
---|---|
2.8.0 | 开始引入 |
使用示例
我真的看不到使用
esc_js()
的价值了。如果确实需要执行内联脚本属性,则可能需要考虑以下示例wp_json_encode()
和esc_attr()
,这似乎更易于阅读和维护:<?php $onfocus = sprintf( 'if ( %s === this.value ) { this.value = ""; }', wp_json_encode( $instance['input_text'] ) ); $onblur = sprintf( 'if ( "" === this.value ) { this.value = %s; }', wp_json_encode( $instance['input_text'] ) ); ?> <input id="subbox" type="text" name="email" value="<?php echo esc_attr( $instance['input_text'] ); ?>" onfocus="<?php echo esc_attr( $onfocus ); ?>" onblur="<?php echo esc_attr( $onblur ); ?>" />
但实际上,这个特定的示例在其脚本属性中根本不需要任何PHP。由于
HTMLInputElement
界面上的defaultValue
属性,以下结果应该是相同的:<input id="subbox" type="text" name="email" value="<?php echo esc_attr( $instance['input_text'] ); ?>" onfocus="if ( this.defaultValue === this.value ) { this.value = ''; }" onblur="if ( '' === this.value ) { this.value = this.defaultValue; }" />
示例
显示在站点前端的表单中的input标记示例,由小工具生成。第一个php段使用esc_attr,因为它是input的html属性,而下一个php段在内联JavasSript中使用esc_js。
<input type="text" value="<?php echo esc_attr( $instance['input_text'] ); ?>" id="subbox" onfocus="if ( this.value == '<?php echo esc_js( $instance['input_text'] ); ?>') { this.value = ''; }" onblur="if ( this.value == '' ) { this.value = '<?php echo esc_js( $instance['input_text'] ); ?>'; }" name="email" />
如果您不在HTML事件处理程序属性中使用内联JS,那么更适合使用的函数是wp_json_encode(),它内置于WordPress中。(wp_json_encode()包括字符串分隔引号):
var title = <?php echo wp_json_encode( $instance['title'] ) ?>;