Правильно ли работает anchorOffset с UIWebView? - PullRequest
0 голосов
/ 03 декабря 2011

Я пытаюсь получить anchorOffset текста, выбранного пользователем в A 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. Есть ли что-то, что я могу сделать, чтобы результат был последовательным?

Спасибо!

1 Ответ

0 голосов
/ 05 декабря 2011

Теперь я понимаю, что я делал неправильно.Это произошло из-за моего недопонимания того, что на самом деле является anchor.Я думал, что anchorOffset относится к первой части выбора географически , но на самом деле это относится к тому месту, где изначально была нажата кнопка мыши (очевидно, не на сенсорном экране).focusOffset относится к тому, где была отпущена кнопка мыши.

Более хорошее объяснение можно найти здесь:

Сайт разработчика Mozilla

Что касаетсяUIWebView при первоначальном выборе географически anchor будет помещен в начало выбранного диапазона, а focus в конце.Однако каждый раз, когда маркер выбора перемещается, он становится focus, а другой дескриптор становится anchor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...