我正在为需要操作具有以下需求的交互式PDF的朋友工作: 有2个主要"层"和2个按钮。当我按下button1时,只有layer1可见,当我按下button2时,layer2是唯一可见的。
他可以为每个按钮上传一个javascript,其中包含必须从点击开始的操作,这是我为他写的代码。
var layerToHideLabel = "testlayer1";
var layerToShowLabel = "testlayer2";
showField(layerToShowLabel);
hideField(layerToHideLabel);
function showField(fieldName){
var field = null;
field = FindOCG(fieldName);
if(field != null){
setVisibility(field,true);
}
}
function hideField(fieldName){
var field = null;
field = FindOCG(fieldName);
if(field != null){
setVisibility(field,false);
}
}
function setVisibility(field, status){
field.state=status;
}
function FindOCG(cName) {
var aOCGs = this.getOCGs();
for(var i=0; aOCGs && i<aOCGs.length;i++) {
if(aOCGs[i].name == cName) return aOCGs[i];
}
return null;
}
getOCGs
函数是文档的内置功能,当然,当我启动该方法时,我收到以下错误:
this.getOCGs is not a function
我认为问题与上下文有关,因为脚本是在点击按钮时启动的,所以可能this
指的是按钮而不是文档。
我尝试了很多组合来从OCG中检索文档,没有运气。我尝试过文档,$ doc,doc,Document,但没有。我担心它甚至不可能,也许我应该尝试在文档级别上传一些代码,但我不知道是否可以添加一些onchange
功能。
这是我到目前为止所遵循的指南: https://acrobatusers.com/tutorials/create_use_layers
提前致谢
答案 0 :(得分:0)
而不是'this.getOCGs()',请尝试调用'event.target.doc.getOCGs()'。
在其中一个文件夹级JavaScripts文件中定义的函数中,“this”未定义。调用函数应该将Doc传递给需要它的此级别的任何函数。
Doc对象通常可以通过事件对象访问,事件对象是为执行JavaScript的每个事件创建的: ●对于鼠标,焦点,模糊,计算,验证和格式化事件,event.target返回发起事件的Field对象。然后,您可以通过Field对象的Doc方法访问Doc对象。