运行MagicZoomPlus.stop();导致间歇性错误

时间:2014-09-12 23:43:23

标签: magiczoomplus magiczoom

如果我调用MagicZoomPlus.stop();对于活跃的魔法师,我经常会收到错误:

Uncaught TypeError: Cannot read property 'width' of null

在其他时候,我会收到此错误:

Uncaught TypeError: Cannot read property 'r' of undefined 

当发生这种情况时,将鼠标悬停在缩略图上会触发:

Uncaught TypeError: Cannot read property 't16' of null 

我试过......

  • 在onload事件中调用MagicZoomPlus.stop()
  • 在不同长度的setTimeout中调用MagicZoomPlus.stop()
  • 在测试MagicZoomPlus
  • 的存在后调用MagicZoomPlus.stop()
  • 在调用MagicZoomPlus.stop()
  • 之前测试图像的宽度/高度
  • 在调用MagicZoomPlus.stop()之前通过css和属性设置图像的宽度/高度

这里是指向jsfiddle的链接,该jsfiddle使用从其文档页面上的示例复制的标记: http://jsfiddle.net/sjjju4x4/6/

如果你跑步'控制台的小提琴打开你有时会得到错误,有时不会。如果将超时时间减少到10毫秒,则会更频繁地发生

似乎我无法在没有代码示例的情况下发帖,所以这里是来自小提琴的JS:

var output = document.getElementById('status');
setTimeout(function () {
    document.getElementById('status').textContent = '...............calling stop';
    MagicZoomPlus.stop();
}, 20);

提前感谢您提供的任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

在调用MagicZoomPlus.stop()之前,请确保MagicZoom实例已准备就绪。

可以使用以下URL中描述的“onready”回调来执行此操作:

https://www.magictoolbox.com/magiczoomplus/integration/#api

以下是一些示例代码:

MagicZoomPlus.options = {
  'onready': function(id, isUpdated) {
     setTimeout(function () {
       document.getElementById('status').textContent = '...............calling stop';
       MagicZoomPlus.stop(id);
     }, 20);
  }
};

这是一个帮助您查看代码的jsfiddle:

http://jsfiddle.net/pg9f98z0/