Iphone UIWebView中的HTML表格数据(<;td>;)屏幕坐标或框架

Iphone UIWebView中的HTML表格数据(<;td>;)屏幕坐标或框架,iphone,html,cocoa-touch,uiview,uiwebview,Iphone,Html,Cocoa Touch,Uiview,Uiwebview,我正在使用HTML在我的应用程序中呈现一些脱机数据。我会在不同的屏幕布局、iPhone、iPad上使用相同的HTML源——横向和纵向。这意味着我为添加内容而设计的HTML表必须相应地拉伸和收缩 我有一些内容(文本和图片),我可以通过提供给HTML来呈现。但我也有一些复杂的内容,比如MapView,带有一些HTML无法处理的自定义内容。因此,我计划将MapView添加为UIWebView上的子视图,正好位于为map分配的位置。通过这样做,我想只要webView的框架发生任何更改,我就可以更改子视图

我正在使用HTML在我的应用程序中呈现一些脱机数据。我会在不同的屏幕布局、iPhone、iPad上使用相同的HTML源——横向和纵向。这意味着我为添加内容而设计的HTML表必须相应地拉伸和收缩

我有一些内容(文本和图片),我可以通过提供给HTML来呈现。但我也有一些复杂的内容,比如MapView,带有一些HTML无法处理的自定义内容。因此,我计划将MapView添加为UIWebView上的子视图,正好位于为map分配
的位置。通过这样做,我想只要webView的框架发生任何更改,我就可以更改子视图的位置

因此,我需要一个机制,让我知道空
的框架,它将负责显示地图视图

表的HTML提取示例:

<table width="100%" border="1" cellpadding="5">
<tr>
<td width = "100%">
This table data though assigned to width 100% would occupy maximum space which is left after assigning space for all table data columns of this row!
</td>
<td width = "80" height = "80">
This table data column is fixed with width and height of 80 pixels. This would be irrespective of the screen size but 80 px width and height would be assigned to this table data. We can use this fixed space for adding a MapView as subview if we get its frame with respect to UIWebView.
</tr>
</table>
然后在我的WebView委托中:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *x = [webView stringByEvaluatingJavaScriptFromString:@"getOffset( document.getElementById('MapViewLoc')).left"];
    NSString *y = [webView stringByEvaluatingJavaScriptFromString:@"getOffset( document.getElementById('MapViewLoc')).top"];
    NSString *width = [webView stringByEvaluatingJavaScriptFromString:@"getOffset( document.getElementById('MapViewLoc')).width"];
    NSString *height = [webView stringByEvaluatingJavaScriptFromString:@"getOffset( document.getElementById('MapViewLoc')).height"];


    NSLog(@"X Y co-ordinates (%@, %@) & [%@, %@]", x, y, width, height);
}

您可以将此javascript代码添加到HTML页面:

function getOffset( el ) {
    var _x = 0;
    var _y = 0;
    while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
        _x += el.offsetLeft - el.scrollLeft;
        _y += el.offsetTop - el.scrollTop;
        el = el.offsetParent;
    }
    return { top: _y, left: _x };
}
然后在代码中可以执行以下操作:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
   string x = [webView stringByEvaluatingJavaScriptFromString:@"getOffset( document.getElementById('td[1]') ).left"];
   string y = [webView stringByEvaluatingJavaScriptFromString:@"getOffset( document.getElementById('td[1]') ).top"];
}

td[1]到底是什么?如何引用特定行(tr)的td项?谢谢你的回答,我还没有实现和试用它。在你的例子中,你展示了两个td标签,所以td[0]是第一个,td[1]是第二个。可能更好的办法是给特定的td或tr一个如下的id:然后执行:getOffset(document.getElementById('mapViewTD'))。Left我如何修改上述代码,以便整个框架可用?我的意思是,我们现在得到了物体的起源,但是我们如何也找到物体的宽度和高度呢?
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
   string x = [webView stringByEvaluatingJavaScriptFromString:@"getOffset( document.getElementById('td[1]') ).left"];
   string y = [webView stringByEvaluatingJavaScriptFromString:@"getOffset( document.getElementById('td[1]') ).top"];
}