在iBooks中翻页时Javascript间歇触发
我正在尝试添加在我的电子书中播放音频的功能,让用户能够暂停并启动此功能,如果他们愿意的话 我可以在javascript中通过控制页面上的标准HTML5音频标记来实现这一点,但当用户翻页时,我希望下一页记住状态,即音频是否暂停 问题似乎在于,当每个页面都打开时,javascript有时会启动,有时不会启动。我尝试添加一个标准的侦听器 'document.addEventListener(“DOMContentLoaded”),函数(事件){` 但这并不总是在页面翻转时触发。当我在Chrome中尝试时,它工作得非常完美 任何帮助都将不胜感激 编辑:以下是我尝试运行的代码:在iBooks中翻页时Javascript间歇触发,javascript,html,dom,epub,ibooks,Javascript,Html,Dom,Epub,Ibooks,我正在尝试添加在我的电子书中播放音频的功能,让用户能够暂停并启动此功能,如果他们愿意的话 我可以在javascript中通过控制页面上的标准HTML5音频标记来实现这一点,但当用户翻页时,我希望下一页记住状态,即音频是否暂停 问题似乎在于,当每个页面都打开时,javascript有时会启动,有时不会启动。我尝试添加一个标准的侦听器 'document.addEventListener(“DOMContentLoaded”),函数(事件){` 但这并不总是在页面翻转时触发。当我在Chrome中尝试
document.addEventListener("DOMContentLoaded", function(event) {
do work
if (document.getElementById("audioreadalong") && localStorage.playaudio == "1"){
if (localStorage.isPaused == "0"){
document.getElementById("audioreadalong").play();
if (document.getElementById("play") && document.getElementById("pause")){
document.getElementById("play").setAttribute("style", "display: none;");
document.getElementById("pause").setAttribute("style", "display: block;");
}
}
else if (localStorage.isPaused == "1"){
document.getElementById("audioreadalong").pause();
if (document.getElementById("play") && document.getElementById("pause")){
document.getElementById("play").setAttribute("style", "display: block;");
document.getElementById("pause").setAttribute("style", "display: none;");
}
}
}
else if(localStorage.playaudio == "0"){
if (document.getElementById("play") && document.getElementById("pause")){
document.getElementById("play").setAttribute("style", "display: none;");
document.getElementById("pause").setAttribute("style", "display: none;");
}
}
});
这在我需要音频的每一页的标题中都有引用(奇数的,右边的,不是偶数的左边的,每个双页是两个独立的网页)
这段代码并不是每次翻页时都运行。每次重新加载页面时,它都会在Chrome中运行。我在epub3规范中看不到任何可以解释这一点的内容
最后编辑:我只能假设a)iBooks在页面上运行javascript的方式存在缺陷;或者b)我有一些配置错误。我已经通过使用苹果的内置支持解决了我的问题。我已经从iTunes下载了示例项目,现在正在使用iBooks命名空间和iBooks.js(在示例项目中找到)。如果有人需要此帖子的帮助,请提出问题并在此处引用
感谢那些试图帮助或投票支持此功能的人。您必须将音频的当前状态存储在本地存储器中,如下所示:
localStorage.setItem("audioState", "true");
只需使用以下命令检索localstorage的值:
localStorage.getItem("audioState");
并相应地实现条件…你所说的换页是什么意思?你的第二页是在同一个DOM中还是在另一个网页中?这是另一个网页-这是一本固定布局的风景书。谢谢Rayon,我现在正在这样做,但问题是,由于某种原因,每次换页时代码都不会运行。你能给我一个您的代码的基本结构是什么?您需要在“DOMContentLoaded”事件中从localstorage获取值。您能告诉我您从localstorage获取的值吗?