1

巨大な本が入った UIWebView があります。を使用して、JavaScriptを介してフォントサイズを変更しています"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='150%';

Html ページは大きくなりますが、スクロール位置は変わらないため、テキストがユーザーの視界から外れます。

私が持っている唯一のアイデアは、本当に奇妙で非効率的です:

  1. すべての単語を<span>タグで囲みます。
  2. 最初の画面を見つけて、それが;<span>であることを覚えておいてください。id
  3. フォントのサイズ変更;
  4. 手順 2 で見つけたスパンまでスクロールします。

そのユーザーが読んでいた位置を保持するより良い方法はありますか?

4

1 に答える 1

1

最後に、受け入れられる方法を見つけました:

フォント サイズを変更する前に、小さな JavaScript を使用して、ページの最初の文字の位置を見つけて保存します。

var range = document.caretRangeFromPoint(0,0); // get a range of a first onscreen letter
var textContainer = range.startContainer.parentNode;// get an element to which it belongs
var path = getElementXPath(textContainer); // get an XPath for that element (this function is not biult in, but you can find it in some other question)
path+='|'+range.startOffset; // stick XPath and index of the letter together

その後、フォント サイズを変更し、XPath で必要な要素を見つけ<a>、文字の直前に invisible を挿入し、その invisible までスクロールし、<a>削除することを忘れないでください。

終わり。それは簡単なアイデアではありませんが、少なくとも機能し、元の質問で説明したアイデアのように CPU や RAM をあまり消費しません。

getElementXPath() 関数を取得する場所は次のとおりです。

于 2013-10-03T11:09:21.300 に答える