Oma toteutus lukijalle
Edistyneiden käyttäjien on mahdollista tehdä oma toteutus verkkosivulukijalle. Tällöin voit itse luoda koko soittimen ulkoasun ja piilottaa oletuksena näkyvän soittimen. Soittimen toimintoja ohjataan JavaScriptillä lukijan tarjoaman API:n kautta.
Valmistelu
Ota lukija käyttöön normaalisti edellisen sivun ohjeen mukaan.
Kun verkkosivulukija on otettu käyttöön, se luo automaattisesti namespacen window.AimReader
, jonka kautta lukijaa voi ohjata.
Lukijan saatavuus
Lukijan namespace on saatavilla vasta sen jälkeen, kun lukijan skripti on ladattu. Voit tarkastaa saatavuuden suoraan namespacen kautta tai kuuntelemalla eventiä 'AimReader.ready'
.
if (window.AimReader?.ready) {
// Lukija on käytettävissä
} else {
window.addEventListener('AimReader.ready', () => {
// Lukija on käytettävissä
}, { once: true });
}
Oletussoittimen piilotus
Kun luot itse soittimen ulkoasun, kannattaa oletussoitin piilottaa kokonaan näkyvistä. Voit piilottaa soittimen käyttämällä seuraavaa CSS-koodia.
.aim-player-host {
display: none !important;
}
API
Kun AimReader
namespace on saatavilla, seuraavat ominaisuudet ja funktiot ovat käytettävissä namespacen kautta, esimerkiksi window.AimReader.play()
.
Ominaisuudet
Ominaisuus | Tyyppi | Kuvaus |
---|---|---|
active |
boolean , readonly |
Onko lukija aktiivinen, eli voiko sillä toistaa audiota. Oletuksena true , jos et erikseen deaktivoi lukijaa. |
ready |
true , readonly |
Onko AimReader namespace valmis käyttöön. |
speed |
number |
Lukijan toistonopeus välillä 0.5 - 4.0 . Oletuksena 1.0 , jos et ole määrittänyt oletusnopeutta Portalissa. Voit vaihtaa nopeutta asettamalla tähän uuden arvon. |
volume |
number |
Lukijan äänenvoimakkuus välillä 0.0 - 1.0 . Oletuksena 1.0 , jos et ole määrittänyt oletusäänenvoimakkuutta Portalissa. Voit vaihtaa äänenvoimakkuutta asettamalla tähän uuden arvon. |
Metodit
Metodi | Paluuarvo | Kuvaus |
---|---|---|
activate() |
void |
Aktivoi lukijan, jos se on deaktivoituna. Lukija aktivoidaan automaattisesti, kun skripti ladataan. |
deactivate() |
void |
Deaktivoi lukijan. Tätä voit käyttää, jos haluat väliaikaisesti ottaa lukijan kokonaan pois käytöstä nykyisellä sivulla. |
next() |
Promise<void> |
Siirtyy toistamaan seuraavaa lausetta. Promise valmistuu, kun seuraavan lauseen toisto on alkanut. |
pause() |
void |
Pysäyttää toiston. Toistoa voi jatkaa kutsumalla play() tai playPause() . |
play() |
Promise<void> |
Aloittaa toiston tai jatkaa pysäytettyä toistoa. Promise valmistuu, kun toisto on alkanut. |
playPause() |
Promise<void> |
Vaihtaa toiston tilaa pysäytyksen ja toiston välillä. Promise valmistuu, kun toisto on alkanut. |
previous() |
Promise<void> |
Siirtyy toistamaan edellistä lausetta. Promise valmistuu, kun edellisen lauseen toisto on alkanut. |
stop() |
void |
Pysäyttää toiston kokonaan ja poistaa lauseiden korostuksen näkyvistä. Toistoa ei voi enää jatkaa samasta kohtaa, vaan ainoastaan aloittaa alusta. |
Eventit
Lukija lähettää joitain eventejä, joita voit kuunnella window.addEventListener
-funktion avulla. Eventin nimi on muotoa 'AimReader.<event>'
, esimerkiksi 'AimReader.loading'
. Jos eventin mukana on dataa, löytyy se detail
-avaimen alta.
Eventin nimi | Data | Kuvaus |
---|---|---|
'AimReader.duration' |
{ totalDuration: number, durationRemaining: number } |
Audion arvioitu kokonaiskesto ja jäljellä oleva kesto sekunteina. Tämä event lähetetään sekunnin välein tai aina, kun jokin kesto muuttuu. Käytetty toistonopeus vaikuttaa audion kestoon. |
'AimReader.error' |
{ error: string | false } |
Lukijassa tapahtui jokin virhe. Mahdolliset error -arvot:- 'server-error' - Palvelin ei vastaa normaalisti.- 'no-text-content-found' - Ei löytynyt tekstiä .aim-readable -elementeistä.- false - Edellinen virhetilanne on selvitetty. |
'AimReader.loading' |
{ loading: boolean } |
Lukija alkaa lataamaan tai lopettaa lataamisen. |
'AimReader.ready' |
void |
Lukijan tarjoama namespace window.AimReader on valmis käyttöön. |
Esimerkki
<html>
<head>
<!-- Load the reader script -->
<script src="https://portal.aimater.com/static/reader/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.js"></script>
<script>
/**
* Enable the custom reader when the reader is ready.
*/
function onReaderReady() {
// Make your custom reader visible.
const myCustomReader = document.getElementById('my-custom-reader');
myCustomReader?.removeAttribute('hidden');
// Show a loading icon when the reader is loading.
const loadingIcon = document.getElementById('loading-icon');
window.addEventListener(
'AimReader.loading',
(event) => {
if (event.detail.loading) {
loadingIcon?.removeAttribute('hidden');
} else {
loadingIcon?.setAttribute('hidden', '');
}
},
);
// Show an error message if the reader encounters an error.
const errorMessage = document.getElementById('error-message');
window.addEventListener(
'AimReader.error',
(event) => {
if (event.detail.error) {
errorMessage?.removeAttribute('hidden');
} else {
errorMessage?.setAttribute('hidden', '');
}
},
);
// Show the remaining duration of the audio.
const durationElement = document.getElementById('duration');
window.addEventListener(
'AimReader.duration',
(event) => {
durationElement.innerHTML = `Kesto: ${event.detail.durationRemaining} s`;
},
);
// Set initial values for volume and speed inputs
const volumeInput = document.getElementById('volume-input');
const speedInput = document.getElementById('speed-input');
if (volumeInput) {
volumeInput.value = window.AimReader.volume;
}
if (speedInput) {
speedInput.value = window.AimReader.speed;
}
}
// Wait for the reader to be ready.
if (window.AimReader?.ready) {
onReaderReady();
} else {
window.addEventListener(
'AimReader.ready',
onReaderReady,
{ once: true },
);
}
</script>
<style>
/* Hide the default player. */
.aim-player-host {
display: none !important;
}
</style>
</head>
<body>
<aside id="my-custom-reader" hidden>
<div id="loading-icon" hidden></div>
<div id="error-message" hidden>Tapahtui odottamaton virhe.</div>
<button type="button" onclick="window.AimReader.play()">Toista</button>
<button type="button" onclick="window.AimReader.pause()">Tauko</button>
<button type="button" onclick="window.AimReader.stop()">Lopeta</button>
<button type="button" onclick="window.AimReader.previous()">Edellinen</button>
<button type="button" onclick="window.AimReader.next()">Seuraava</button>
<label for="volume-input">Äänenvoimakkuus</label>
<input
id="volume-input" type="range"
min="0" max="1" step="0.1"
oninput="window.AimReader.volume = this.value"
/>
<label for="speed-input">Puhenopeus</label>
<input
id="speed-input" type="range"
min="0.5" max="4" step="0.1"
oninput="window.AimReader.speed = this.value"
/>
<div id="duration">Kesto: 0 s</div>
</aside>
<article class="aim-readable">
...
</article>
</body>
</html>