错误的 SET 格式。不确定我做错了哪一个

wrong SET format. Not sure which one I did wrong

简而言之,我正在尝试记录我的 macros 脚本的错误。如果它到达标题为第一章的页面,则表示之前的代码无效。

TAG POS=1 TYPE=H1 ATTR=TXT:Chapter<SP>One EXTRACT=TXT


SET !VAR2 EVAL("var text=\"{{!EXTRACT}}\"; if(text==\"Chapter One\") {iimPlay("code: ADD !extract {{!NOW:yyyymm}}\nADD !extract {{!COL2}}\nADD !extract Cannot<SP>Access<SP>Page\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=logs.txt");iimPlay("0-DeleteAll.iim");};text;")

指向这一行的错误。

SET !VAR2 EVAL("var text=\"{{!EXTRACT}}\"; if(text==\"Chapter One\") {iimPlay("code: ADD !extract {{!NOW:yyyymm}}\nADD !extract {{!COL2}}\nADD !extract Cannot<SP>Access<SP>Page\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=logs.txt");iimPlay("0-DeleteAll.iim");};text;")

wrong format of SET command, line 43 (Error code: -910)

不确定是哪一个。 必须是明显的部分。

错误是 EVAL 字符串中未转义 double-quote 字符的结果,特别是在包含 SET 命令的行中的字符位置 79。由于 EVAL 的主要参数是字符串值,因此必须使用 \ 字符对任何嵌入的引号进行转义,例如\".

但更重要的是,即使您修复了嵌入的引号字符,此代码也不会起作用,因为您无法在 EVAL 中调用 iimPlay 或任何其他 iMacros 脚本接口方法。 EVAL 命令使用的 Javascript 引擎与浏览器使用的主 Javascript 引擎在不同的上下文中运行,因此调用 iimPlay 将导致 "iimPlay is not defined"(错误代码:-1001) .