2016-11-21 15 views
4

Когда вы долго нажимаете слово на веб-странице WKWebView, вы выберете его, и система выведет меню, чтобы вы могли обмениваться/копировать/искать его так. Это поведение по умолчанию для iOS.Как получить слово в указанном месте на WKWebView?

Так что мой вопрос: Как вы программно получаете слово из указанной точки (CGPoint) на веб-странице WKWebView?

Или, Как вы программно выбираете слово на веб-странице WKWebView без длинного нажатия?

Любые советы приветствуются!

+0

Вы посмотрели на диапазон выбора DOM? http://stackoverflow.com/a/2214120/218152 – SwiftArchitect

+0

проверить этот вопрос http://stackoverflow.com/questions/31175224/get-word-under-tap-from-uiwebview-using-javascript – msk

ответ

1

Сначала вы должны преобразовать точку в систему координат прокрутки, используя convertPoint:toView:. Вы можете использовать эту точку в функции Javascript (с jQuery), которая будет искать узел DOM в этот момент:

function(inX, inY) { 
    var theWindow = $(window); 
    var theElement = document.elementFromPoint(
     inX - theWindow.scrollLeft(), inY - theWindow.scrollTop()); 

    return theElement == null ? null : theElement.textContent; 
} 
+0

Не работает для меня. ошибка из webView.evaluateJavaScript говорит, что $ не определено. После того, как я заменил окно $ window (window), он говорит, что scrollLeft не определено. – Jonny

+0

Поэтому я редактирую скрипт так: 'var theElement = document.elementFromPoint (\ (point.x), \ (point.y)); theElement == null? null: theElement.textContent; 'Теперь он может дать некоторый контент для меня в' point', но вместо этого дайте мне слово, оно дает мне целое предложение, которое я не ожидал. – Jonny

+0

Вы должны включить jQuery, чтобы получить работу $ -expressions. – clemens