簡體   English   中英

在UIWebView中更改字體大小后重新定位

[英]Repositioning after changing font size in UIWebView

我有一個帶有大量書籍的UIWebView。 我正在使用"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='150%';通過JavaScript更改字體大小"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='150%';

HTML頁面變大,但是滾動位置保持不變,導致文本移出用戶視線。

我唯一的想法真的很奇怪而且效率很低:

  1. 將每個單詞包裝在<span>標簽中;
  2. 找到第一個屏幕上的<span>並記住它的id
  3. 調整字體大小;
  4. 滾動到我在步驟2中找到的范圍。

有沒有更好的方法來保留該用戶正在閱讀的位置?

終於,我找到了一種可以接受的方式:

在更改字體大小之前,我使用一些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> ,滾動到該不可見的<a> ,不要忘記刪除它。

完成。 那不是一個簡單的想法,但至少它能起作用,並且不會消耗太多的CPU或RAM,就像我在原始問題中已經解釋過的想法一樣。

這是獲取getElementXPath()函數的地方

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM