2017-03-29 3 views
0

ユーザーがJavascriptを使用してeリーダーのEPUBのフォントサイズを変更したときに、イベントリスナーを使用または作成しようとしていますが、方法が見つかりません。私は成功せずに試してみました何フォントがEPUBで変更されたとき検出する

  • resizeイベントリスナ。
  • フォントサイズを測定するタイミングイベント。
  • viewportの音階を測定するリスナー。 ebook-viewer(別名キャリバービューア)で

私は毎回私は、フォントサイズにコンソールのプリントViewport cfi: /2/4/2/2/1:1を変更インスペクタで見ることができます。 1:1が変更されたとき、それはある種の整数型のスケールです。

私はthisまたはthisでビューポートスケールを検出しようとしました。

だから私は、すべての試行は、どちらかのiOS上で動作しませんでした

...私がebook-viewerの検査官の谷見ることができるという理由だけで可能であると仮定します。

更新

私はepubReadingSystemとその限界について知っています。また、JSはEPUB3ではオプションです。

A short verse. A very very long [verse.

I:私は何を解決しようとしていることはスペイン語の詩に詩は、ボックスのサイズは、それがブレークし、次の行は、右のブラケットに位置合わせされなければならないことがあることも大きい場合ということですこの変更を行う方法を考え出しました。問題は、ユーザーがフォントを変更したときに、計算をやり直さなければならないことです。 jsfiddle.net/dxr9azy7

答えて

0

あなたが欲しいものを行うための信頼できる方法はありません、:

作業例...私は、固定されたEPUBをすることによってこの問題を解決しようとしましたが、iBooksのとebook-viewerは、フォントの増加を許可します「信頼できる」とは、「可能なEPUB読み取りシステムで作業する」ことを意味します。その理由は、EPUB仕様が、文脈の特性、例えばそれをレンダリングするアプリケーションのフォントサイズなどの現在の読取り設定を文書に「認識」する正式な方法をEPUB仕様が提供しないためである。

JavascriptのサポートはEPUB 2にはなく、EPUB 3ではオプションであり、多くの読書システムはEPUBの中にあることができるJavaScriptコードの種類を制限しています。

EPUB 3仕様では、Javascriptをサポートする読書システムのオブジェクトとしてepubReadingSystemが導入されていますが、 EPUB内のJSコードが変更に対応するために使用できるイベントバインディング読書の設定で。 (参照:http://www.idpf.org/epub/31/spec/epub-contentdocs.html#app-epubReadingSystem

を一方、ほとんどの読み取りシステムが実際にWebKitのようなレンダリングエンジンの上に構築されているので、彼らはJavascriptを実行することができます場合、あなたは確かにいくつかの「リバースエンジニアリング」を行うと、魚に試すことができます管理している正しいグローバルオブジェクト、および表示に使用するドキュメントモデル少し運があれば、自分のバインディングを登録することができます。しかし、このソリューションは、それを把握するのに多くの時間を必要とします。テストした読書システムでのみ動作し、更新されたアプリケーションで中断する可能性があります。要するに、私はこのルートを試すことをお勧めしません。

EDIT:私が自分のEPUB 3の読書アプリで実装したものに似ています。https://www.readbeyond.it/minstrel/developers.html#jsですが、残念ながら、それは残念ながら、私が知っている唯一のアプリです。 EPUBファイル内のJSと読み込みシステム

+0

実装している 'onFontSizeChange'が達成したいことを説明するために投稿を更新しました。これには既知の解決策はありませんか?ミンストレルでこの変化をどのように検知しますか? – NikaZhenya

+0

達成したいことは、JSの代わりにCSSを使うことです。 http://epubsecrets.com/formatting-poetry-in-epub-part-1.phpとhttp://epubsecrets.com/formatting-poetry-in-epub-part-2.phpを読むことをお勧めします。これらは記事は古いものですが、あなたの詩をどのようにフォーマットするかについて、彼らから良いアイデアを引き出すことができます。 –

+0

Minstrelはハイブリッドアプリケーションなので、「GUI」は実際にはCordova製のネイティブアプリでWebView内で実行されるHTML5 + JSです。したがって、EPUBを開くと、グローバルな '' epubReadingSystem''オブジェクトが公開され、アプリケーションのGUI(例:ユーザーがfont => font sizeイベントを増やすなど)でイベントが発生すると、JSコードによって登録されたコールバックこのグローバルオブジェクト上のEPUBの内部で呼び出されます。 https://github.com/readbeyond/minstrel/blob/master/cordova/src_minstrel/www/js/rb.epub.reader.js#L4283以降の行を参照してください。 developers.htmlページにEPUBのサンプルがあります。 –

0

this postのおかげで、EPUBで、少なくともキャリバー、ADE、およびiBooks for MacとiOSでフォントサイズの変更を検出する方法が見つかった。あなたはスペイン語の詩、see thisの作業スクリプトを探しているなら

window.addEventListener("load", function() { 
    iframe = document.createElement("iframe"); 
    iframe.id = "some_id"; 
    iframe.style.top = "0"; 
    iframe.style.left = "0"; 
    iframe.style.width = "100%"; 
    iframe.style.height = "5em"; 
    iframe.style.zIndex = "-1"; 
    iframe.style.visibility = "hidden"; 

    document.body.insertBefore(iframe, document.body.childNodes[0]); 

    window.frames["some_id"].addEventListener("resize", function() { 
     // Event when font size changes. 
    }); 
}); 

を:あなたがIFRAMEを作成する必要が

... ReadiumとEPUBReaderでそれを試してみるとよいでしょう。サンプルをダウンロードする:mobileread.com/forums/attachment.php?attachmentid=155891&d=1490939383

ありがとうございます!

関連する問題