1

好的,所以我的代码在下面,当我输入拼写错误的单词或没有意义的短语时,它会显示一个带有“msng”的对话框,但我希望我显示一条错误消息。如果 theAnswer 是/包含“msng”,我尝试使用这两种方法......但它不起作用,感谢任何帮助。

tell application "Safari"
    quit
end tell

set defaultAnswer to ""
set cancelButton to "Cancel"
set buttonResearch to "ReSearch"

display dialog "Query: " default answer defaultAnswer buttons {cancelButton, buttonResearch} default button buttonResearch cancel button cancelButton with icon 1
copy the result as list to {button_pressed, text_returned}

tell application "Dragon Dictate"
    set listening to false
end tell

if (button_pressed is buttonResearch) and (text_returned is not "") then
    set theUrl to "http://www.wolframalpha.com/input/?i=" & encode_text(text_returned, true, false)
    tell application "Safari"
        tell window 1 to set current tab to (make new tab with properties {URL:theUrl})
        tell me to say "let me look that up for you now"
        tell document 1
            repeat -- wait until loaded
                delay 2
                if (do JavaScript "document.readyState") = "complete" then exit repeat
            end repeat
            do JavaScript "document.getElementById('pod_0200').getElementsByClassName('action subpod-copyablept ')[0].click()" -- show the popup window
            set theAnswer to do JavaScript "document.body.lastChild.getElementsByTagName('pre')[0].innerHTML;" -- get the answer in this popup window
        end tell
    end tell
    activate

    if theAnswer contains "msng" then
        display dialog "There was an error, you may have misspelled a word or phrased it incorrectly"
    else
        display dialog theAnswer
    end if

end if

tell application "Safari"
    quit
end tell

-- encoding high-ASCII characters:
on encode_char(this_char)
    set the ASCII_num to (the ASCII number this_char)
    set the hex_list to {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"}
    set x to item ((ASCII_num div 16) + 1) of the hex_list
    set y to item ((ASCII_num mod 16) + 1) of the hex_list
    return ("%" & x & y) as string
end encode_char

-- TEXT ENCODING: encode spaces and high-level ASCII characters (those above 127)
-- encode_URL_A = encode most of the special characters reserved for use by URLs.
on encode_text(this_text, encode_URL_A, encode_URL_B)
    set the standard_characters to "abcdefghijklmnopqrstuvwxyz0123456789"
    set the URL_A_chars to "$+!'/?;&@=#%><{}[]\"~`^\\|*"
    set the URL_B_chars to ".-_:"
    set the acceptable_characters to the standard_characters
    if encode_URL_A is false then set the acceptable_characters to the acceptable_characters & the URL_A_chars
    if encode_URL_B is false then set the acceptable_characters to the acceptable_characters & the URL_B_chars
    set the encoded_text to ""
    repeat with this_char in this_text
        if this_char is in the acceptable_characters then
            set the encoded_text to (the encoded_text & this_char)
        else
            set the encoded_text to (the encoded_text & encode_char(this_char)) as string
        end if
    end repeat
    return the encoded_text
end encode_text
4

1 回答 1

1

利用

if theAnswer is missing value then
    display dialog "There was an error, you may have misspelled a word or phrased it incorrectly"
else
    display dialog theAnswer
end if

因为«class msng»缺失值的原始 AppleScript 代码。

display dialog命令显示这个类的名称 --> "msng"

于 2015-06-11T16:51:26.997 回答