如何在UIWebView中获取元素的位置?

时间:2011-09-13 03:28:29

标签: javascript html ios ipad uiwebview

我的iPad程序中加载了html的UIWebView。通过使用-webkit-column-width,我将html分成几列。

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

如何在webview中获取元素位置(x,y)?位置在屏幕位置,而不是在html中。因此y的范围从0到webview的高度。

提前致谢。

3 个答案:

答案 0 :(得分:33)

因为必须包含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;
}

答案 1 :(得分:2)

好的,我使用jquery函数解决了

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

我得到真正的x,y值。感谢。

答案 2 :(得分:1)

以下是@JohanKools回复https://stackoverflow.com/a/8307454

的快速4版本
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
}