我在其中一个视图控制器中嵌入了一个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];
由于
答案 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参数。