glightbox
glightbox copied to clipboard
Got wrong in v3.3.0, there is no "node" property in image object, is it bug?
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?
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:
- Go to '...'
- Click on '....'
- Scroll down to '....'
- 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]
@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.
@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';
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.
Have official version fixed this bug?
@biati-digital
@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.