Webkit:使用Objective-C查找单击DOMElement的绝对位置

时间:2014-06-19 15:25:23

标签: objective-c webkit

我想在WebView中找到点击的DOMElement的位置。在我的委托-[webView:decidePolicyForNavigationAction:request:frame: decisionListener:]被调用。我可以从作为actionInformation参数传递的字典中提取单击的DOM元素。但我无法弄清楚如何找回它的位置。

我尝试通过webview.window.currentEvent获取点击位置,但这返回了一些虚假位置的WebKit事件。

任何想法如何解决这个问题而不是直接进入JavaScript?

1 个答案:

答案 0 :(得分:3)

在没有实际JavaScript的情况下应该工作的最简单方法是使用DOMElement的Objective-C属性,它反映了底层的JS属性。不幸的是,似乎没有好的文档,但你可以阅读标题,例如。 G。 WebKit/Headers/DOMElement.h等。

在这里,您最好的选择是offsetLeft/Top/Width/Height。您需要将这些值添加到文档元素的scrollLeft/Top值。此外,对于某些元素,尤其是跨多行的文本或跨度,调用JS函数getBoundingClientRect()将返回更好的结果。但您也可以使用WebScriptObject API从Objective-C执行此操作。如果您需要帮助,我可以提供帮助。