12
edits
Automactic (talk | contribs) |
Automactic (talk | contribs) |
||
Line 34: | Line 34: | ||
==== Table of content ==== | ==== Table of content ==== | ||
<syntaxhighlight lang="javascript" line='line'> | <syntaxhighlight lang="javascript" line='line'> | ||
function TableOfContents () { | function TableOfContents () { | ||
this.getSections = function() { | |||
/* | |||
- return an array of section objects | |||
- in case there there is no table of content, return an empty array | |||
*/ | |||
} | |||
this.scrollToSection = function(index: number) { | |||
/* | |||
- scroll to a section with index in array returned by this.getSections | |||
- perform change to the page so that the section become available for reading, such as expanding the collapsed section | |||
*/ | |||
} | |||
// OPTIONAL | |||
this.visibleSectionIndexes = function() { | |||
/* | |||
- return an array of visible section's indexes | |||
- in case there there is no table of content, return an empty array | |||
*/ | |||
} | |||
// OPTIONAL | |||
this.startVisibleSectionCallBack = function () { | |||
/* | |||
- start page visible section call back | |||
- using this call back, the reader app could know which section is currently visible to the user and highlighting the location in table of content | |||
- implementation to be discussed. It might not be a good idea to modify window.onscroll directly | |||
*/ | |||
var handleScroll = function() { | |||
var visible = tableOfContents.visibleSectionIndexes(); | |||
if (visible.length > 0) { | |||
window.location = 'pagescroll:scrollEnded?start=' + visible[0] + '&length=' + visible.length; | |||
} | |||
} | |||
window.onscroll = handleScroll; | |||
handleScroll(); | |||
} | |||
// OPTIONAL | |||
this.stopVisibleSectionCallBack = function () { | |||
/* | |||
- stop page visible section call back | |||
*/ | |||
window.onscroll = undefined; | |||
} | |||
} | } | ||
function Section(title: string, level: number) {} | function Section(title: string, level: number) {} | ||
</syntaxhighlight> | </syntaxhighlight> |
edits