传递给 JavaScript 的 AppleScript 变量

AppleScript variables passed to JavaScript

本文关键字:AppleScript 变量 JavaScript      更新时间:2023-09-26

我将TextEdit中的文本存储在AppleScript变量中,我想将其传递给JavaScript。我以为我做得对,但我仍然无法存储值。代码如下:

tell application "TextEdit"
    activate
    set docText to the text of the front document --This works. I've checked.
end tell
tell application "Google Chrome"
    tell window 1
        tell active tab
            execute javascript "function encryptDocument() {
                plainText = '" & docText & "';
                return plainText;
                } encryptDocument();"
                set skurp to the result
                display dialog skurp
            end tell
    end tell
end tell

我将 JavaScript 代码存放在 tell application "Google Chrome" 命令中的原因是,每次尝试在上一个 tell application "TextEdit" 命令中调用它时,我都会收到错误。该错误总是说它期望行尾,但发现"。不太确定为什么,但我找不到解决此问题的方法。

您要为变量提供的值(我的意思是文本编辑器中的文本)是否有可能包含单引号 (')?没有 ' 在文本编辑器中,这似乎对我有用。

以下代码片段可用于转义单引号。(改编自此代码)

on escape(this_text)
    set AppleScript's text item delimiters to the "'"
    set the item_list to every text item of this_text
    set AppleScript's text item delimiters to the "'''"
    set this_text to the item_list as string
    set AppleScript's text item delimiters to ""
    return this_text
end escape
tell application "TextEdit"
    activate
    set docText to the text of the front document --This works. I've checked.
end tell
set docText to escape(docText)
tell application "Google Chrome"
    tell window 1
        tell active tab
            execute javascript "function encryptDocument() {
                plainText = '" & docText & "';
                return plainText;
                } encryptDocument();"
            set skurp to the result
            display dialog skurp
        end tell
    end tell
end tell