报告Web视图的设备宽度小于屏幕

时间:2013-03-12 17:01:46

标签: objective-c

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

我们在HTML标题中设置了width = device-width,因此它返回了一个768x ####页面并导致Web视图水平滚动,因为我的webview的rect是< 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];

由于

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

解决方案是在服务器端检测iframe调用并发送类似的内容:

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

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