javascript - Openseadragon 在后台下载

标签 javascript browser openseadragon

我正在尝试使用 openseadragon (OSD) 版本 2.2.1 下载全尺寸的深度缩放图像。 我的图像位于服务器上,我可以使用 OSD 打开它们。我下载它们的步骤是:

  1. 使用
  2. 将图像列表加载到正文中
  3. 使用复选框检查要下载的图像
  4. 点击“下载”按钮进行下载

下载功能具有以下功能:

  • 将图像列表加载到 gridview
  • 创建 Canvas 并附加到正文
  • 如果不存在则创建 OSD 查看器
  • 使用以下方法打开第一个检查的图像:viewer.open(tileSources)
  • 添加 OSD 处理程序“open”以设置源的完整大小。
  • 绘制当前图像中的形状
  • 添加 OSD 处理程序“tile-drawing”,用于设置简单时间变量的值
  • 设置每 10 秒检查一次变量更改的时间间隔。如果变量在最后 10 秒内没有变化,则意味着所有图 block 都已绘制。
  • 如果所有图 block 均已绘制,请使用“File-Saver”库下载图像

OSD 查看器源的完整大小:

$("#OSDelement").attr("style", "height: " + viewer.world.getItemAt(0).source.dimensions.y / window.devicePixelRatio) + "px;" +
 "width: " + (viewer.world.getItemAt(0).source.dimensions.x / window.devicePixelRatio) + "px");

该网站的示例模型是: mock-up

当浏览器的选项卡处于事件状态时,一切下载正常(下载需要时间,但它正在完成其工作)。问题是我正在尝试在“后台”下载。当我转到不同的选项卡时,OSD 磁贴停止加载。当浏览器选项卡未激活时,如何强制打开 OSD 并加载图 block ? 有时,当每个浏览器 session 选项卡未处于事件状态时,它会开始下载,但图 block 根本不绘制。它下载空文件,因为查看器上没有图 block 。完全没有错误。

请给我一些想法。谢谢!

最佳答案

它在后台不起作用的原因是它使用 requestAnimationFrame,当您的选项卡位于后台时它会暂停。一种修复方法是执行以下操作:

OpenSeadragon.requestAnimationFrame = function(callback) {
    setTimeout(callback, 16);
};

关于javascript - Openseadragon 在后台下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41771034/

相关文章:

javascript - 从当前鼠标位置绘制三 Angular 形

javascript - 传单 : how to access and update a marker inside a layer

javascript - Phantom.js - 在警告框内获取文本

javascript - 更改 window.location.ancestorOrigins

browser - 远程视频轨道静音/启用的 webRTC 含义

openseadragon - 将 OpenSeaDragon Viewer Home 设置为图像的 "Top"

javascript - 收集模式下 OpenSeaDragon 覆盖和工具提示的问题

javascript - AngularJS - 如何按 ng-repeat 中类似数组对象的值进行排序

javascript - 使用 javascript 禁用与网站的连接