在 Adobe DC JavaScript 调试器中检查您的 PDF 文档时,恐怕只会抛出一大堆语法错误。当您修复一组语法错误时,会弹出一组全新的语法错误。据我所知(有人希望能证实这一点),旧版本 Adobe 中的 JavaScript 解释器对它们如何解释语言的要求不那么严格,这就是为什么你的表单在旧版本中工作,但被阻止的原因Acrobat DC 中的最新口译员。
当我检查引发错误的 JavaScript 时,我不仅注意到 Adrobat DC 确实希望您用分号终止 JavaScript 语句(您的代码有时会这样做),而且我还发现非常奇怪的结构,有些会让我相信,即使您的表单在技术上没有在旧版本的 Acrobat 中引发任何错误,您可能会发现这些表单在旧版本中实际上并没有正常运行。
因此,要修复这些错误并让您的表单在 Adobe Acrobat DC 中运行,您必须清理所有抛出的错误,这意味着迁移(更新)您的编码风格以符合新的严格级别在 Acrobat DC 的运行时中。
例如,当我第一次使用 Acrobat DC 中的 JavaScript 调试器打开您的表单时,我收到以下错误:
语法错误:缺少;声明之前
121:Document-Level:CreditCalcException in line 5 of function top_level, script Page-Actions:Page1:Page Open:Action4
ReferenceError:未定义加载
5:Page-Actions:Page1:Page Open:Action4Exception 在函数 top_level 的第 2 行,脚本 AcroForm:LoadCountyLock:Annot1:OnBlur:Action1
ReferenceError:未定义 FormNumber
2:AcroForm:LoadCountyLock:Annot1:OnBlur:Action1Exception in line 10 of function top_level, script AcroForm:ButtonMonth1.3.0:Annot1:MouseUp:Action2
ReferenceError:未定义 MonthsNumber
10:AcroForm:ButtonMonth1.3.0:Annot1:MouseUp:Action2Exception in line 10 of function top_level, script AcroForm:ButtonMonth1.0.0:Annot1:MouseUp:Action2
函数 top_level 第 10 行的异常,脚本 AcroForm:ButtonMonth1.1.0:Annot1:MouseUp:Action2
ReferenceError:未定义 MonthsNumber
10:AcroForm:ButtonMonth1.0.0:Annot1:MouseUp:Action2
语法错误:缺少;声明之前
121:文档级别:CreditCalc
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
语法错误:缺少;声明之前
121:
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
77:AcroForm:DynolistHS:Annot1:MouseUp:Action2
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:
SyntaxError:类是保留标识符
56:
SyntaxError:类是保留标识符
56:
SyntaxError:类是保留标识符
56:
SyntaxError:类是保留标识符
56:文档级:SVCFees
语法错误:缺少;声明之前
121:
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
56:文档级:SVCFees
SyntaxError:类是保留标识符
138:AcroForm:DynolistVehicle:Annot1:MouseUp:Action1
请注意您是如何遇到所有这些错误的,例如:
SyntaxError:类是保留标识符
语法错误:缺少;声明之前
这些很好地表明 DC 中的新 JavaScript 解释器将 JS 保持在更高的标准,并使用更新的语言功能,如 classkeyword,并强制规定必须使用分号来终止语句。
当您继续单击 PDF 时,JavaScript 调试器开始以相同的方式抱怨更多错误(缺少分号、未定义的函数等),因此修复一个问题只会揭示另一个兔子的额外漏洞,但相同的问题。
所以我想说更新此表单并为最新版本的 DC 做好准备的最快途径是检查您的脚本并应用一些约定或 linting 以开始清理语法(用分号终止所有语句等)。一旦你清理了语法,JavaScript 解释器很可能会开始查找它之前找不到的函数声明(由于它正在考虑无效的语法),这将(希望)清除“未定义的函数” " 错误。
另外,我会做一些一般性测试,以确保您的表单按照您的预期工作,因为我看到了奇怪的 JavaScript,例如取自 CreditCalc 函数的示例:
注意到123 和125 之间的换行了吗?在我看来,这看起来很奇怪,从我所看到的,位于第 125 行的“浮动”对象中的代码永远不会被击中,它只是存在,但永远不会起到任何作用,这个对你来说应该很可怕。
诸如此类的奇怪结构在您的脚本中随处可见,以及其他可能导致意外行为的陷阱,例如使用 != 0 而不是 !== 0。
所以恐怕这里没有简单的答案,在 Acrobat DC 允许您运行此表单之前,您可能需要进行大量清理工作。