Closed sxf359 closed 7 years ago
我测试了我的demo,并没有你说的问题。不过我却发现我的 destroy() 少销毁一个事件监听。希望你先测试我提供的demo,再对比你的代码,尽快锁定问题。确保问题清楚后,我会更新我的代码。
通过对比,并做了下测试。知道问题出在哪里了。你的demo是在页面中直接创建了一个对象。只创建了一次。然后一直在用这个对象。我的是执行了一个函数。这个函数先实现弹出一个层,然后在这个层中创建了photoClip对象。每次执行这个函数都会重新创建这个对象。这就导致我说的哪个问题。第一次点击弹出执行了一次photoclip.第二次是执行了2次,第三次是3次。也就是一旦保存图片。第一次是一张图,第二次会是两张图。第三次是3张。哪个destroy函数确实有问题。一旦使用,再次创建的对象不能用。有错误。谢谢你的答复
恩,先确保对象不要重复创建,然后更新到v2.0.5,看看是否还有问题
我使用的场景是这样得: 打开一个弹出层,然后在这个层内创建插件对象。 当直接创建对象:
这里不写完,因为有点长。第一次点击上传图片没有问题。上传了一张。然后再次点击选择图片,相应的图片上传就成了两张。然后再次点击选择图片上传,就成了四张。通过
输出值发现,第二次选择上传的时候这个被执行了两次,第三次就执行了4次。我想着或许用你的插件提供的clipArea.destroy()等到上传成功后,销毁创建的对象。然后再次打开弹出层,重新创建这个插件对象能解决此问题。我是这样用的:
第一次打开弹出层,然后选中图片保存,保存完后自动关闭弹出层。然后第二次打开弹出层,选择图片,再次保存图片的时候出现了这个js提示: jquery.photoClip.js:515 Uncaught TypeError: Cannot read property 'offset' of null 这我猜测是因为你的destroy方法销毁了太多东西,导致再次创建的对象有缺失造成。另外我不能确定,你这个多次选择图片,保存的图片成倍增加是不是因为你这个插件的问题。期待你的解决