2013-06-04 8 views
3

미디어 오버레이 지원을 시뮬레이션하기 위해 라이브러리 (곧 "BSD/MIT 라이센스하에 배포 할 라이브러리")를 개발했습니다 ("큰 소리로 읽으십시오"또는 " SMIL ")을 애플 iBooks에서 리플 로우가 가능한 EPUB3 eBook에 적용 할 수 있습니다. (iBooks는 Readium이나 Azardi와는 달리 FXL 레이아웃 모드에서만 MO를 지원합니다.)표시된 EPUB3 전자 북에 자바 스크립트가 포함 된 iBooks 페이지 넘김

현재 활성화 된 SMIL 조각이 현재 페이지를 떠나서 다음 페이지로 이동할 때 iBooks "회전"페이지를 만들고 싶습니다. . 이렇게하려면 다음을 수행해야합니다.

1) 활성 조각이 현재 페이지 외부로 이동했음을 알고 2) 페이지를 강제로 회전합니다.

첫 번째 포인트는 SMIL 요소 오프셋을 계산하여 (엄밀히 말하면) 달성 할 수 있습니다. 나는 공연 2)에 붙어있다.

Apple의 ibooks.js에서는 TouchEvent를 주입하는 것이 효과가없는 것으로 보입니다. 활성 문서에보고되고 "호스트 WebKit"이 아닌 것이기 때문입니다.

iBooks가 현재 표시된 EPUB3 리플 로우 형 전자 책에 의해로드 된 JS 내에서 페이지를 전환하는 방법에 대한 아이디어가 있으십니까?

편집 : 최대이 질문에 다음, 내가 여기에 상기 JS 발표 : https://github.com/pettarin/rb_smil_emulator

답변

1

당신이 다음 XHTML 문서에 진행에 대해 이야기하는 경우를, 그것은 적합해야합니다 간단하게 할 수

location.href="nextpage.xhtml"; 

동일한 XHTML 문서 내에서 이동하는 경우 가장 좋은 방법은 ID 요소를 사용하여 해당 페이지 내의 위치를 ​​식별하고 바로 이동하는 것입니다.

location.href="#id"; 

단순히 페이지 회전을 실행/시뮬레이션하는 방법은 없습니다.

+0

두 번째 질문은 귀하의 제안 된 접근 방식이 완벽하게 작동합니다! (나는 그것에 대해 생각하지 않는다는 사실에 조금 부끄러워. 비록 내가 JS 전문가가 아니지만!) 각 SMIL 조각에는 고유 한 ID가 있으므로 착륙 요소를 식별하는 것은 문제가되지 않습니다. , JS는 그들 모두를 알고있다. 이 답변을 수락하고 게시 해 주셔서 감사합니다. –

+0

불행히도, location.href가 재설정 될 때마다 iBooks는 (IMHO, 불쾌한) 페이지 뒤집기 효과를 생성합니다. 그렇지 않으면 내 문제에 대한 완벽한 해결책이 될 것이며 심지어 페이지가 실제로 "변경되거나 변경되지"않는지 계산하지 않아도됩니다. 또한 location.href를 설정하면 Readium 페이지 매김이 중단됩니다. 따라서 기본적으로 autoturn 페이지 옵션이 해제 된 JS를 출시했습니다. –

+0

문제의 앵커가 이미 현재 페이지에 있는지 확인하고, 그렇지 않은 경우에만 'location.href'를 실행하면됩니다. 'elt.getBoundingClientRect.top'을'document.documentElement.scrollTop'과 비교하고 bottom, left 및 right도 같게하려고합니다. –