Javascript函数显示带有setTimeout的隐藏按钮在PDF中不起作用

Posted

技术标签:

【中文标题】Javascript函数显示带有setTimeout的隐藏按钮在PDF中不起作用【英文标题】:Javascript function to show a hidden button with setTimeout not working in a PDF 【发布时间】:2018-06-26 14:54:26 【问题描述】:

我有一个交互式 PDF,其中一个名为“Nav_Forward_Page_14”的表单域按钮设置为隐藏。我希望按钮在包含按钮的页面加载后 10 秒可见;等等页面属性(对于带有按钮的页面),我尝试在页面加载时添加以下 javascript,但两个脚本都不起作用:

setTimeout(function() 
this.getElementById("Nav_Forward_Page_14").style.display = "inline"; 
, 10000);

想可能是我的功能不对,我也试过了:

setTimeout(function() 
this.getElementById("Nav_Forward_Page_14").display = display.visible; 
, 10000);

请帮助我更正在 PDF 页面加载延迟后显示隐藏按钮所需的功能。提前谢谢!

【问题讨论】:

【参考方案1】:

您可以使用document.body.onload = function(),它会在加载 DOM 主体后执行,这与将脚本放在 <body> 标记的底部相同。

为了不浪费时间,我做了延迟3 seconds,你可以自己编辑。

这是一个更简化的例子:


var delay = 3000;

document.body.onload = function() 
	setTimeout(() => 
  	document.querySelector('button').style.display = 'inline';
  , delay);
button 
  display: none;
<button>Next page</button>

【讨论】:

谢谢亚历克斯。我已经尝试了您的建议,但 PDF 中的某些内容仍然无法正常工作。由于我的按钮已经定义为页面上的表单字段按钮并设置为隐藏,我可以在 document.body.onload 函数中为'Nav_Forward_Page_14'子'按钮'吗?【参考方案2】:

当作为 Javascript 添加到页面打开时,它可以在 PDF 中工作:

function runImage() 
this.getField("Nav_Forward_Page_14").display = display.visible

run = app.setTimeOut("runImage()", 10000);

【讨论】:

以上是关于Javascript函数显示带有setTimeout的隐藏按钮在PDF中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

同步和异步 setTimeou(异步) async和await promise(疑惑点)

JavaScript 计时

Javascript函数显示带有setTimeout的隐藏按钮在PDF中不起作用

2021前端面试之JavaScript手写题

经典闭包

setTimeout,setInterval运行原理