How to get position of an element in UIWebView?
I have UIWebView loaded with html in my iPad Program. By using -webkit-column-widt开发者_运维问答h, I divided the html with several columns.
padding: 0px
height: 1024px
-webkit-column-gap: 0px
-webkit-column-width: 768px
How can i get the element position(x, y) in webview? The position is on the screen position, not in the html. So y is in range from 0 to height of webview.
Thanks in advance.
Because having to include jQuery just for this sucks:
- (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;
}
Ok, i solved using jquery function
var p = $("tag");
var position = p.position();
I gets real x, y values. Thanks.
Here is the swift 4 version of @JohanKools answer 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
}
精彩评论