我已经在脚本的顶部声明了全局变量,并且初始化了它们。
我可以将do JavaScript
设置为变量emptyDue
,但当我试图将JavaScript的结果与变量serviceDate
进行比较时,我得到
错误“未定义变量emptyDue。”编号-2753来自“emptyDue”
为什么我可以在一行上赋值emptyDue
,然后在下一行上,它突然忘记它应该存在?
global emptyDue, serviceDate
set emptyDue to ""
set serviceDate to "2021-11-30"
on isEmptyDue()
tell application "Safari" to tell document 1
set emptyDue to do JavaScript "document.getElementById('trgUseNext').click();
document.getElementById('trgUseNext').value; --gets the date value from a webpage."
if emptyDue < serviceDate then
display dialog "TRUE"
else
display dialog "FALSE"
end if
end tell
end isEmptyDue
isEmptyDue()
log emptyDue
2条答案
按热度按时间q7solyqu1#
AppleScript的设计中存在一个已知缺陷:一个命令可能不返回任何值。2如果你把这个命令的结果绑定到一个变量上,它实际上使这个变量成为未定义的。
您可以通过确保命令 * 总是 * 返回一个值来避免-2753错误,即使该值只是一个空字符串。
rqqzpn5f2#
这是一个已知的AppleScript bug,正如用户foo对这个问题的回答所指出的。下面是一个小代码片段,可以帮助其他人解决同样的问题:
可以使用以下语法调用此处理程序:
这并不能保证您的JavaScript能够正常工作,但至少可以给予一个更有意义的错误消息。