我想在WebView中找到点击的DOMElement的位置。在我的委托-[webView:decidePolicyForNavigationAction:request:frame:
decisionListener:]
被调用。我可以从作为actionInformation参数传递的字典中提取单击的DOM元素。但我无法弄清楚如何找回它的位置。
我尝试通过webview.window.currentEvent
获取点击位置,但这返回了一些虚假位置的WebKit事件。
任何想法如何解决这个问题而不是直接进入JavaScript?
答案 0 :(得分:3)
在没有实际JavaScript的情况下应该工作的最简单方法是使用DOMElement
的Objective-C属性,它反映了底层的JS属性。不幸的是,似乎没有好的文档,但你可以阅读标题,例如。 G。 WebKit/Headers/DOMElement.h
等。
在这里,您最好的选择是offsetLeft/Top/Width/Height
。您需要将这些值添加到文档元素的scrollLeft/Top
值。此外,对于某些元素,尤其是跨多行的文本或跨度,调用JS函数getBoundingClientRect()
将返回更好的结果。但您也可以使用WebScriptObject
API从Objective-C执行此操作。如果您需要帮助,我可以提供帮助。