glightbox icon indicating copy to clipboard operation
glightbox copied to clipboard

Got wrong in v3.3.0, there is no "node" property in image object, is it bug?

Open mahui-cn opened this issue 10 months ago • 5 comments

Describe the bug

I just upgrade to v3.3.0, It run into error when I click images in PC (not mobile) whereas it is normal in v3.2.0

I check the source code, it got wrong in this line : const slideTriggerNode = this.elements[this.index].node; I also debug this in Chrome, it is sure that there is no node property in the image object, is this a new bug? 微信截图_20240401060841

the following is related piece of source code for your reference....

 // if a slide height is set via data-height, we want to use that
 // if not, we fall back to 100vh
const slideTriggerNode = this.elements[this.index].node;
const maxHeightValue = slideTriggerNode.getAttribute('data-height') ?? '100vh';

imgNode.setAttribute('style', `max-height: calc(${maxHeightValue} - ${descHeight}px)`);
description.setAttribute('style', `max-width: ${imgNode.offsetWidth}px;`);

Are you able to reproduce the bug in the demo site Yes|No.

To Reproduce Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior A clear and concise description of what you expected to happen.

Post the code you are using Help me solve issues faster, if I can copy paste your code I can try to reproduce and fix the bug faster.

Screenshots If applicable, add screenshots to help explain your problem.

Desktop:

  • OS: windows 10
  • Browser chrome
  • Version latest version

Smartphone:

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

mahui-cn avatar Apr 01 '24 02:04 mahui-cn

@biati-digital Having the same issue here after updating to 3.3.0, It started throwing an error. However, It only happens when the slide has a description added to it.

image

jignesh-travelopia avatar May 15 '24 12:05 jignesh-travelopia

@biati-digital Looks like this.elements[this.index] is not valid slide element anymore and throwing an error. https://github.com/biati-digital/glightbox/blob/master/src/js/glightbox.js#L1091

const slideTriggerNode = this.elements[this.index].node;
const maxHeightValue = slideTriggerNode.getAttribute('data-height') ?? '100vh';

To fix this issue, you can directly use the slide variable, which is already a reference to the slide element

const maxHeightValue = slide.getAttribute('data-height') ?? '100vh';

jignesh-travelopia avatar May 15 '24 13:05 jignesh-travelopia

I was having the same issue but with galleries created from code. Changing line 1091 like this fixed it:

const maxHeightValue = slideTriggerNode ? slideTriggerNode.getAttribute('data-height') ?? '100vh' : '100vh';

It looks for .node when there is not any.

vincurekf avatar Aug 21 '24 15:08 vincurekf

Have official version fixed this bug?

@biati-digital

mahui-cn avatar Aug 22 '24 04:08 mahui-cn

@mahui-cn no there isn't an official fix right now. If the example fixes above work, I would recommend those for the time being.

gingerchew avatar Aug 27 '24 14:08 gingerchew