在Applescript中运行Javascript时转义字符

时间:2015-08-21 03:11:34

标签: javascript applescript

在AppleScript中使用do shell script命令时,通常需要转义某些字符。 Quoted form of可用于此目的。

是否有为Applescript的do JavaScript命令设计的等效命令?

以下是一个例子:

set message to "I'm here to collect $100"
do shell script "echo " & message
--> error

如上所述,shell脚本会返回错误,因为shell不会将撇号'$视为文本。最简单,最通用的解决方案是利用AppleScript的quoted form of,它一举逃脱message变量中所有违规字符:

set message to "I'm here to collect $100"
do shell script "echo " & quoted form of message
--> "I'm here to collect $100"

message变量重复变化或由非专业用户等输入时,避免单独出现违规字符不是解决方案。

使用`do JavaScript:

可能会出现类似的情况
set theText to "I'm not recognized by Javascript because I have both
                an internal apostophe and line feed"

tell application "Safari" to do JavaScript "document.getElementById('IDgoesHere').value ='" & theText & "';" in document 1

由于theText'linefeed的内容显然不会将“JavaScripted”带入预期的文本字段。

问题:AppleScript是否具有等效于quoted form of的设计用于“转义”特定JavaScript问题的文本。

1 个答案:

答案 0 :(得分:0)

Applescript在文本处理方面并不是很好,但你可以用它来逃避角色。

您可以使用此子例程:

function LoginController($scope){
    $scope.test = 'login';
}

示例:

on replace_chars(this_text, search_string, replacement_string)
 set AppleScript's text item delimiters to the search_string
 set the item_list to every text item of this_text
 set AppleScript's text item delimiters to the replacement_string
 set this_text to the item_list as string
 set AppleScript's text item delimiters to ""
 return this_text
end replace_chars

(Source)