我有一个单一的页面应用程序,在这个应用程序中,我有不同的页面,使用pdf.js显示不同的pdfs。我经常遇到问题,因为一旦初始化pdf.js一次,它就会为每个不同的实例使用这些设置,或者看起来是这样的。
每次访问这些页面时,我都希望能够销毁pdf.js对象并创建一个新的对象。到目前为止,我还没有找到一个销毁方法,我已经尝试删除画布对象,关闭PDFViewerApplication,但我仍然存在这些问题。
我看到的一些错误是:-The覆盖已经注册了,-offsetParent没有设置--不能滚动。
发布于 2016-09-28 19:23:35
最快的答案是,你的单页网站可以使用帧。
* { border: 0; margin: 0; padding: 0; overflow: hidden; }
iframe { width: 100%; height: 50%; width: 100vw; height: 50vh; }<iframe src="http://mozilla.github.io/pdf.js/web/viewer.html"></iframe>
<iframe src="http://mozilla.github.io/pdf.js/web/viewer.html"></iframe>
JavaScript全局对象将绑定到各自框架的窗口对象,而不会相互干扰。
您可以使用Mozilla的示例,将viewer.js更改为从位置的查询变量或散列组件中提取。使用一些参数(如?path=document123.pdf或#document123.pdf )来构建框架的URL。
如果需要销毁 one,则只需销毁框架即可。如果您需要操作 one,您可以到达帧内(CORS,XSS规则,安全性允许.)通过在(iframe.contentDocument || iframe.contentWindow.document))上使用contentWindow (或元素 )。
如果您无法通过contentWindow,直接到达,您可以构造一个脚本来使用postMessage发送和接收信号,或者只完成框架脚本中的所有工作。
https://stackoverflow.com/questions/39604853
复制相似问题