This is in Prototype 1.5 and 1.5.1_rc2
On Apr 3, 3:47 pm, "[EMAIL PROTECTED]"
<[EMAIL PROTECTED]> wrote:
> When Position.page() is used on an INPUT element, the offset returned
> (and hence returned by Position.clone()) in IE6 is based on the cursor
> position if the text in the INPUT element has exceeded the visible
> limits. Is this by design?
>
> Example (input box on a page nested in a few divs, width of input box
> is 400px, actual offset is 300px):
>
> [_______________________]
> <-- 300px --><------------------ 400px ---------->
>
> In IE6, if I call Position.page() on the input box when there is no
> text in it, the offset is returned as 300. However, if there are say
> 500 characters in the input box, such that the input box has scrolled
> to the right, the left offset as calculated by Position.page() will be
> some value less than 300 (the left offset corresponds to the position
> the first character in the input box would be at, were it visible).
> If the text in the INPUT box occupies 600px, and the cursor is
> positioned at the end in this scenario, then .page() returns a left
> offset of 100px. In extreme cases the left offset will be negative.
>
> In the definition for Position.page(), once the offset parent tree has
> been calculated, the scroll parent tree is determined. So in this
> case, for the INPUT element where the text has overflowed the visible
> space, in IE6 element.scrollLeft returns a non-zero value, which is
> subtracted from the total offset, thus returning to the user a value
> less than 300. Firefox returns zero for scrollLeft in this case.
>
> page: function(forElement) {
> var valueT = 0, valueL = 0;
>
> var element = forElement;
> do {
> valueT += element.offsetTop || 0;
> valueL += element.offsetLeft || 0;
>
> // Safari fix
> if (element.offsetParent == document.body)
> if (Element.getStyle(element,'position')=='absolute') break;
>
> } while (element = element.offsetParent);
>
> element = forElement;
> do {
> if (!window.opera || element.tagName=='BODY') {
> valueT -= element.scrollTop || 0;
> valueL -= element.scrollLeft || 0;
> }
> } while (element = element.parentNode);
>
> return [valueL, valueT];
> },
>
> Is this the intended behavior of Position.page()? If the user is
> looking for the pixel coordinates of a visible element relative to the
> top left of the visible screen, I would say be inclined to argue that
> what they are getting in IE is incorrect (since the offset is not
> visible to the user). This effects the Autocompleter in IE as it uses
> the position of an input text box which might be scrolled to determine
> where to position the autocomplete prompt.
>
> Thanks
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Spinoffs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---