cnbeining / base2

Automatically exported from code.google.com/p/base2
0 stars 0 forks source link

HTMLElement.scrollIntoView #32

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
I'm planning to implement HTMLElement.scrollIntoView repairs (at least older 
versions of Safari 
don't implement it).

One point of discussion: the behaviour of the different implementations are not 
the same. For 
example: IE also scroll's horizontal, when it is called upon an inline element.

Do we repair these kinds of issues too?

Original issue reported on code.google.com by doek...@gmail.com on 21 Jul 2007 at 8:49

GoogleCodeExporter commented 9 years ago
Oh yeah, the url to the standard:
http://www.w3.org/html/wg/html5/#scrollintoview

it doesn't mention horizontal scrolling.

Original comment by doek...@gmail.com on 21 Jul 2007 at 8:50

GoogleCodeExporter commented 9 years ago
If it is only a few lines of code then by all means code it up. If it requires 
a lot
of code then I don't consider it important enough to include in base2.DOM. You 
can
alway write it as an optional Module if that is the case. Maybe DOM/extras is
something we should create either way?

Original comment by dean.edw...@gmail.com on 23 Jul 2007 at 9:04

GoogleCodeExporter commented 9 years ago
DOM/extras it is. We can always merge it with DOM later.

Original comment by doek...@gmail.com on 23 Jul 2007 at 9:21

GoogleCodeExporter commented 9 years ago
Hey. If scrollIntoView fix is only a couple of lines it can still go in 
base2.DOM
core. But It would be nice to have some /extras/ for other stuff.

Or we can namespace it (with lazy loading in mind).

e.g. base2.use(DOM.Element.scrollIntoView);

Which would mean that the code lived here:

/svn/version/whatever/DOM/HTMLElement/scrollIntoView.js

Thoughts?

Original comment by dean.edw...@gmail.com on 23 Jul 2007 at 9:54

GoogleCodeExporter commented 9 years ago
I will come up with my javascript builder idea shortly. Then we talk.

The code for scrollIntoView at the moment is:
---8<----------------------------------------------------------------------
function GetWindowHeight() {
  return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body.clientHeight||0;
}
function GetScrollTop() {
  return window.pageYOffset||document.documentElement&&document.documentElement.scrollTop || document.body.scrollTop||0;
}
function GetTop(element) {
  var pos=0;
  do pos+=element.offsetTop
  while(element=element.offsetParent);
  return pos;
}
function InView(element,margin) {
  if(typeof element=='string') element=$(element);
  if(!margin) margin=0;
  var Top=GetTop(element), ScrollTop=GetScrollTop();
  return !(Top<ScrollTop+margin || Top>ScrollTop+GetWindowHeight()-element.offsetHeight-margin);
}
function ScrollIntoView(element,bAlignTop,margin) {
  if(typeof element=='string') element=$(element);
  if(!margin) margin=0;
  var posY=GetTop(element);
  if(bAlignTop) posY-=margin;
  else posY+=element.offsetHeight+margin-GetWindowHeight();
  window.scrollTo(0, posY);
}
---8<----------------------------------------------------------------------
to long?

Original comment by doek...@gmail.com on 23 Jul 2007 at 10:06

GoogleCodeExporter commented 9 years ago
Too long.

Original comment by dean.edw...@gmail.com on 23 Jul 2007 at 1:06

GoogleCodeExporter commented 9 years ago
That too ;-)

Original comment by doek...@gmail.com on 23 Jul 2007 at 3:42

GoogleCodeExporter commented 9 years ago
We could create DOM/HTML5, and also move getElementsByClassName to there, and 
implement:
irrelevant, draggable there. But I for starters, I implement the DOM/strict way.

Original comment by doek...@gmail.com on 23 Jul 2007 at 10:02

GoogleCodeExporter commented 9 years ago
I've added the code to DOM/extras for the moment. One note about the 
enhancement. I just found out all 
modern browsers support it. Probably an early version of Safari 2 didn't 
support it, and Opera8 en Firefox1. But 
it's good to have it.

Shall we rename extras to html5?

Original comment by doek...@gmail.com on 23 Jul 2007 at 11:07

GoogleCodeExporter commented 9 years ago
I'm not sure I want to start an HTML5 project just yet. It will just give people
ideas. Leave the code in extras for the time being. It may become useful later. 
But
what we really need is documentation! :-)

Original comment by dean.edw...@gmail.com on 24 Jul 2007 at 12:38

GoogleCodeExporter commented 9 years ago
The code is in subversion, but there's a bug: doesn't work on 
overflow+fixed-height elements.
I'll pick this up later, since this is actually a legacy enhancement.

Original comment by doek...@gmail.com on 27 Jul 2007 at 11:24