IE7/8 fails when setPosition of empty element #2326

Closed
javierarias opened this Issue Mar 9, 2012 · 4 comments

Comments

Projects
None yet
3 participants
@javierarias

IE7 and IE8 throws TypeError when you create an empty element (that is, no inner text, html or child nodes) and you try to set its position with setPosition() before injecting it in the DOM. However, it's OK if you inject an element with inner text = ''.

Error message is:

// throws "Unable to get value of the property 'toInt': object is null or undefined”
new Element('p').setPosition({x: 10, y: 20});
// OK
new Element('p', {text: ''}).setPosition({x: 10, y: 20});
// OK
new Element('p').inject(document.body).setPosition({x: 10, y: 20});
// OK
new Element('p').grab(new Element('span')).setPosition({x: 10, y: 20});

http://jsfiddle.net/qWAHd/4/

@javierarias

This comment has been minimized.

Show comment
Hide comment
@javierarias

javierarias Mar 9, 2012

Even more, it doesn't fail if you set the inner text of an element to null:

// this is also OK
new Element('p', {text: null}).setPosition({x: 10, y: 20});

Even more, it doesn't fail if you set the inner text of an element to null:

// this is also OK
new Element('p', {text: null}).setPosition({x: 10, y: 20});
@arian

This comment has been minimized.

Show comment
Hide comment
@arian

arian Mar 19, 2012

Member

https://github.com/mootools/mootools-core/blob/160cdb3/Source/Element/Element.Dimensions.js#L219

should probably be

    return parseInt(styleString(element, style) || 0, 10);
Member

arian commented Mar 19, 2012

https://github.com/mootools/mootools-core/blob/160cdb3/Source/Element/Element.Dimensions.js#L219

should probably be

    return parseInt(styleString(element, style) || 0, 10);
@gonchuki

This comment has been minimized.

Show comment
Hide comment
@gonchuki

gonchuki Aug 9, 2012

Contributor

I would say that the issue is a little deeper in getComputedStyle as the margin-left of the detached element with no text is returning null, and once you set some text it returns 0px.
Curious thing is that if you append this element into another one (even if it's also detached) and then you detach the element again you start getting the valid 0px value. Probably an internal IE bug where the detached element gets no layout or even no style attributes at all until you interact with it.

Contributor

gonchuki commented Aug 9, 2012

I would say that the issue is a little deeper in getComputedStyle as the margin-left of the detached element with no text is returning null, and once you set some text it returns 0px.
Curious thing is that if you append this element into another one (even if it's also detached) and then you detach the element again you start getting the valid 0px value. Probably an internal IE bug where the detached element gets no layout or even no style attributes at all until you interact with it.

@gonchuki

This comment has been minimized.

Show comment
Hide comment
@gonchuki

gonchuki Aug 9, 2012

Contributor

edit: what was here was a dumb idea.

getting some specs and a proper pull request soon.

Contributor

gonchuki commented Aug 9, 2012

edit: what was here was a dumb idea.

getting some specs and a proper pull request soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment