Как получить положение элемента в UIWebView? - PullRequest
14 голосов
/ 13 сентября 2011

У меня UIWebView загружен с HTML в моей программе iPad. Используя -webkit-column-width, я разделил HTML на несколько столбцов.

padding: 0px
height: 1024px
-webkit-column-gap: 0px
-webkit-column-width: 768px

Как я могу получить положение элемента (x, y) в веб-просмотре? Позиция находится на позиции экрана, а не в HTML. Таким образом, у находится в диапазоне от 0 до высоты веб-просмотра.

Заранее спасибо.

Ответы [ 3 ]

33 голосов
/ 29 ноября 2011

Потому что включать jQuery только для этого отстой:

- (CGRect)positionOfElementWithId:(NSString *)elementID {
    NSString *js = @"function f(){ var r = document.getElementById('%@').getBoundingClientRect(); return '{{'+r.left+','+r.top+'},{'+r.width+','+r.height+'}}'; } f();";
    NSString *result = [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:js, elementID]];
    CGRect rect = CGRectFromString(result);
    return rect;
}
2 голосов
/ 25 сентября 2011

Хорошо, я решил использовать функцию jquery

var p  = $("tag");
var position = p.position();

Я получаю реальные значения x, y. Спасибо.

1 голос
/ 19 марта 2018

Вот быстрая 4 версия @JohanKools ответа https://stackoverflow.com/a/8307454

func positionOfElement(withId elementID: String?) -> CGRect 
{
    let js = "function f(){ var r = document.getElementById('%@').getBoundingClientRect(); return '{{'+r.left+','+r.top+'},{'+r.width+','+r.height+'}}'; } f();"
    let result = webView?.stringByEvaluatingJavaScript(from: String(format: js, elementID))
    let rect: CGRect = CGRectFromString(result!)
    return rect
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...