2

我的一个视图控制器中嵌入了一个 Web 视图。它的矩形为 600x800。好像当我发出一个 url 请求时,它告诉网络服务器它是 768px 宽,这是整个 ipad 纵向的宽度。

我们在 HTML 标头中设置了 width=device-width,因此它给了我一个 768x#### 页面并导致 web 视图水平滚动,因为我的 webview 的矩形是 < 768。

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />

我如何设置这个 webview 以便它向 web 服务器报告正确的(较小的)宽度?

更新

我确实发现一些代码集在 webViewDidFinishLoad 中的 HTML 中设置了宽度,它确实有效,但是有更好的方法吗?看起来像一个黑客。

NSString *jsCmd = @"var viewport = document.querySelector('meta[name=viewport]');";
jsCmd = [jsCmd stringByAppendingFormat:@"viewport.setAttribute('content', 'width=%i, initial-scale=1.0, user-scalable=1');", (NSUInteger)_webView.frame.size.width];
[_webView stringByEvaluatingJavaScriptFromString:jsCmd];

谢谢

4

2 回答 2

5

跳过在元标记中给出宽度值。

<meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
于 2013-03-12T18:11:38.937 回答
0

元标记由服务器发送并由浏览器解释。使用 768 作为设备大小的是您的浏览器(safari)(这是正确的)。

解决方案是,在服务器端检测 iframe 调用并发送如下内容:

<meta name="viewport" content="width=600; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>

为了检测服务器端的 iframe 调用,最简单的方法是添加一个 URL 参数。

于 2013-03-12T17:21:32.917 回答