add getSlideNotes API method and tests
parent
5a40b4486f
commit
0338f280d3
|
@ -372,6 +372,9 @@ Reveal.getIndices(); // { h: 0, v: 0 } }
|
||||||
Reveal.getProgress(); // 0-1
|
Reveal.getProgress(); // 0-1
|
||||||
Reveal.getTotalSlides();
|
Reveal.getTotalSlides();
|
||||||
|
|
||||||
|
// Returns the speaker notes for the current slide
|
||||||
|
Reveal.getSlideNotes();
|
||||||
|
|
||||||
// State checks
|
// State checks
|
||||||
Reveal.isFirstSlide();
|
Reveal.isFirstSlide();
|
||||||
Reveal.isLastSlide();
|
Reveal.isLastSlide();
|
||||||
|
|
46
js/reveal.js
46
js/reveal.js
|
@ -2475,22 +2475,7 @@
|
||||||
|
|
||||||
if( config.showNotes && dom.speakerNotes && currentSlide && !isPrintingPDF() ) {
|
if( config.showNotes && dom.speakerNotes && currentSlide && !isPrintingPDF() ) {
|
||||||
|
|
||||||
var notes = '';
|
dom.speakerNotes.innerHTML = getSlideNotes() || '';
|
||||||
|
|
||||||
// Notes can be specified via the data-notes attribute...
|
|
||||||
if( currentSlide.hasAttribute( 'data-notes' ) ) {
|
|
||||||
notes = currentSlide.getAttribute( 'data-notes' );
|
|
||||||
}
|
|
||||||
|
|
||||||
// ... or using an <aside class="notes"> element
|
|
||||||
if( !notes ) {
|
|
||||||
var notesElement = currentSlide.querySelector( 'aside.notes' );
|
|
||||||
if( notesElement ) {
|
|
||||||
notes = notesElement.innerHTML;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dom.speakerNotes.innerHTML = notes;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3335,6 +3320,32 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the speaker notes from a slide. Notes can be
|
||||||
|
* defined in two ways:
|
||||||
|
* 1. As a data-notes attribute on the slide <section>
|
||||||
|
* 2. As an <aside class="notes"> inside of the slide
|
||||||
|
*/
|
||||||
|
function getSlideNotes( slide ) {
|
||||||
|
|
||||||
|
// Default to the current slide
|
||||||
|
slide = slide || currentSlide;
|
||||||
|
|
||||||
|
// Notes can be specified via the data-notes attribute...
|
||||||
|
if( slide.hasAttribute( 'data-notes' ) ) {
|
||||||
|
return slide.getAttribute( 'data-notes' );
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... or using an <aside class="notes"> element
|
||||||
|
var notesElement = slide.querySelector( 'aside.notes' );
|
||||||
|
if( notesElement ) {
|
||||||
|
return notesElement.innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the current state of the presentation as
|
* Retrieves the current state of the presentation as
|
||||||
* an object. This state can then be restored at any
|
* an object. This state can then be restored at any
|
||||||
|
@ -4486,6 +4497,9 @@
|
||||||
// Returns the slide background element at the specified index
|
// Returns the slide background element at the specified index
|
||||||
getSlideBackground: getSlideBackground,
|
getSlideBackground: getSlideBackground,
|
||||||
|
|
||||||
|
// Returns the speaker notes string for a slide, or null
|
||||||
|
getSlideNotes: getSlideNotes,
|
||||||
|
|
||||||
// Returns the previous slide element, may be null
|
// Returns the previous slide element, may be null
|
||||||
getPreviousSlide: function() {
|
getPreviousSlide: function() {
|
||||||
return previousSlide;
|
return previousSlide;
|
||||||
|
|
|
@ -24,10 +24,11 @@
|
||||||
<img data-src="fake-url.png">
|
<img data-src="fake-url.png">
|
||||||
<video data-src="fake-url.mp4"></video>
|
<video data-src="fake-url.mp4"></video>
|
||||||
<audio data-src="fake-url.mp3"></audio>
|
<audio data-src="fake-url.mp3"></audio>
|
||||||
|
<aside class="notes">speaker notes 1</aside>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<section data-background="examples/assets/image2.png">
|
<section data-background="examples/assets/image2.png" data-notes="speaker notes 2">
|
||||||
<h1>2.1</h1>
|
<h1>2.1</h1>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
|
|
@ -139,6 +139,14 @@ Reveal.addEventListener( 'ready', function() {
|
||||||
strictEqual( Reveal.getSlideBackground( 1, 100 ), undefined, 'undefined when out of vertical bounds' );
|
strictEqual( Reveal.getSlideBackground( 1, 100 ), undefined, 'undefined when out of vertical bounds' );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test( 'Reveal.getSlideNotes', function() {
|
||||||
|
Reveal.slide( 0, 0 );
|
||||||
|
ok( Reveal.getSlideNotes() === 'speaker notes 1', 'works with <aside class="notes">' );
|
||||||
|
|
||||||
|
Reveal.slide( 1, 0 );
|
||||||
|
ok( Reveal.getSlideNotes() === 'speaker notes 2', 'works with <section data-notes="">' );
|
||||||
|
});
|
||||||
|
|
||||||
test( 'Reveal.getPreviousSlide/getCurrentSlide', function() {
|
test( 'Reveal.getPreviousSlide/getCurrentSlide', function() {
|
||||||
Reveal.slide( 0, 0 );
|
Reveal.slide( 0, 0 );
|
||||||
Reveal.slide( 1, 0 );
|
Reveal.slide( 1, 0 );
|
||||||
|
|
Loading…
Reference in New Issue