配置:
在调查https://github.com/stephanrauh/ngx-extended-pdf-viewer/issues/101 时,我注意到有三个事件已注册但从未取消注册。 我想这是内存泄漏。 就我而言,当我在使用 PDF 查看器离开页面后尝试通过 CTRL+P 打印时,这会导致我的 SPA 出现问题。
我想这只是将这三个事件添加到PDFViewerApplication.unbindWindowEvents() 的问题。
谢谢,我觉得你说得对。 我认为这不一定是内存泄漏,但这应该稍微重构一下,以便窗口事件的绑定/解除绑定仅在一个地方。
似乎事情没那么容易,虽然我还不知道为什么:
window.print()
。顺便说一句,这是我的源代码更改: https :
忘记我的上一篇文章 - 我已经设法让一切正常运行。 从 DOM 中删除 pdf.js 后,可以恢复标准功能。 另请参阅#10948,这是昨天让我感到困惑的意外副作用。
在 pull request #11380 中,三个注册的事件侦听器中的两个现在在重置时也未注册。 此问题仅保留打印 keydown 事件侦听器。
在 pull request #11380 中,三个注册的事件侦听器中的两个现在在重置时也未注册。
是的,但是这些事件只是被间接修复了,因为出于其他原因(例如与其他组件的一致性)允许重置PDFHistory
实例是有意义的。
虽然在一般我会很动心建议WONTFIX为PDFPrintService
代码,有两个原因:
<iframe>
,我无法想象这些事件侦听器会引起任何麻烦。 [1]FirefoxPrintService
,因为它没有注册任何事件。 因此,试图在PDFPrintService
“修复”这个会导致不同的PDFPrintServiceFactory
接口“不平衡”。web/pdf_print_service.js
注册了许多window
事件,我认为您需要在加载后立即注册它们,以免错过任何事件和/或不是第一个事件处理程序。 因此,删除这些事件侦听器可能会导致以后出现意外行为。[1] 另请注意http://mozilla.github.io/pdf.js/getting_started/#introduction (重点是我的):
查看器构建在显示层上,是 Firefox 中 PDF 查看器和项目中其他浏览器扩展的 UI。 它可以是构建您自己的查看器的一个很好的起点。 但是,我们会询问您是否打算将查看器嵌入您自己的网站,而不仅仅是未修改的版本。
@Snuffleupagus我无法回避您不赞成 ngx-extended-pdf-viewer 项目的印象。 这样对吗? 如果是这样,为什么?
只是为了记录:ngx-extended-pdf-viewer 确实建立在 pdf.js 之上。 它向核心 pdf.js 文件添加了 62 处修改。 它还增加了很多附加价值,尤其是与 iFrame 方法相比。 目前,皮肤有限。 据我所知,几乎每个用户都在使用它。 高级蒙皮(即 Material Design 和 Bootstrap4)在用户的愿望清单之上,所以很快就会出现。
总而言之,我很惊讶您如此频繁地强调“重新皮肤或构建”这一点。
我无法回避您不赞成 ngx-extended-pdf-viewer 项目的印象。
老实说,我什至不知道“ngx-extended-pdf-viewer”项目是什么,而且现在圣诞节即将来临,我没有时间弄清楚,因此我显然对此没有意见:-)
一般来说,不挑出任何特定项目:不应该按原样使用默认查看器的原因是为了避免自定义应用程序由于看起来或多或少而被误认为是 Firefox 中的内置 PDF 查看器与许多用户相同。
@Snuffleupagus谢谢! 这是一个很好的理由,我可以使用它。 我会看看我能做些什么让“我的”嵌入式查看器看起来不同。 在大多数情况下,它看起来会有所不同,因为它不是整页查看器,但当然,我不想在您的错误跟踪器上看到我的错误。
我可以提供的是:如果有人提交错误报告并提到“Angular”,请抄送我。
最好的问候,圣诞快乐
斯蒂芬
你真是太好了,谢谢! 一般来说,我们提到换肤是因为我们看到 PDF.js 的自定义部署中的错误在此处报告的相对频繁,因为用户认为他们正在与官方查看器打交道,而实际上他们正在查看默认查看器的未换肤副本。 为了避免这种情况,我们通常会提到这一行,但在这种情况下,它只是为了表明像您一样扩展 PDF.js 实际上是可以/推荐的,所以不用担心!
如果您在 PDF.js 中发现问题,请随时报告它们。 我们已经根据您的问题/评论修复了一些问题,因此非常有帮助。