There are two possibilities here, and without seeing more of the book's code, it's not really possible to tell. The first is that this is extra functionality offered by the reading system rather than something built into the epub file itself. As noted by Liz Castro in the spec, this is similar to Apple's example of
supporting symantically marked footnotes, and then "associating specialized behaviors" as the spec directs.
If that's the case, Moon+ and Calibre don't seem to be supporting the epub 3 spec as directly as Apple does, though—according to the Structural Semantics Vocabulary for epub 3, footnotes should be contained in <aside>
tags marked with epub:type=footnote"
and then corresponding epub:type="noteref"
s for the superscripted symbols in the body.
The other possibility is that there is some JavaScript in the ebook file that is somehow accessing content in a different file. Since JavaScript is generally constrained by the DOM, though, this doesn't seem likely.
if you'd like to replicate the behavior yourself in an epub 3 file, the relevant code (heavily cribbed from the spec) to try out would be:
<p>This is some body text with a footnote reference. <a class="noteref" epub:type="noteref" href="#note1">1</a></p>
...
<aside class="footnote" epub:type="footnote" id="note1">1: This is a corresponding note</aside>
Note that this behavior is purely optional—epub 3 has the ability for publishers to tell the reading system what kind of content a particular section is, and it is up to the reading systems to decide what they want to do with that information.
EDIT: Based on your comment, it sounds like since there is no JavaScript and the book is epub 2.0, there is either something hack-y going on or the reading systems you're using are looking for particular classes and associating special behavior with them. Based on this blog postthis blog post, I'm guessing the former—it sounds like you can include the correct namespacing in an epub 2 file to allow epub:type
to work, and change the <aside>
tag to a <p>
with display: none
on its CSS to get this to work in iBooks, which Moon+ and Calibre might be copying.
Note that according to that blog post, this gives you a working ebook that fails epubCheck, which means that many retailers will reject it. Making an epub 3 file might be the way to go for you.