anchorOffset能否与UIWebView一起正常工作?

时间:2011-12-03 14:34:31

标签: javascript objective-c ios uiwebview

我正在尝试在A anchorOffset中获取用户选择的UIWebView文字。我有一个简短的Javascript函数(下面),当用户选择文本并从自定义上下文菜单中选择一个选项时调用该函数。

function textPosition()
{ 
    var text = window.getSelection();
    var x = text.anchorOffset;
    return x;
}

我在UIWebView开头显示了一个简单的段落:

  

这是一个测试句子

如果我选择整个单词,一切都按预期工作......例如。如果我选择This该函数返回0,如果我选择sentence,该函数将返回15

但是,如果我移动UIWebView中所选文字的句柄,则anchorOffset与预期不同。例如。在第一个单词this中按如下顺序选择部分,将返回以下内容:

his返回4

hi返回1

Thi返回3

此外,这取决于我更改选择的顺序:

This返回0

Thi返回0

hi返回3

anchorOffset似乎不同,取决于我改变选择的选择的结尾。

我的问题是:

  1. 我犯了一个明显的错误吗?
  2. 这是预期的行为吗?
  3. 我能做些什么来使结果保持一致吗?
  4. 谢谢!

1 个答案:

答案 0 :(得分:0)

我现在明白我做错了什么。它源于我对anchor实际上是什么的误解。我认为anchorOffset引用选择地理位置第一部分但实际上它与最初按下鼠标按钮的位置有关(显然不是触摸屏幕)。 focusOffset与释放鼠标按钮的位置有关。

可以在这里找到更好的解释:

mozilla developer site

关于UIWebView初始选择会将anchor地理位置放在所选范围的开头,而focus放在最后。但是,每次移动选择句柄时,它变为focus,另一个句柄变为anchor