displaying Wiki mobile page in UIWebView within UIPopoverController

前端 未结 3 1706
孤独总比滥情好
孤独总比滥情好 2020-12-18 15:34

I try to open wiki mobile version webpage by a UIWebView within a UIPopoverController. the problem is, not matter how I set my contentSizeForViewInPopover, or just UIWebView

3条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-18 15:37

    This is an enhanced version of auco answer, where if the viewport meta tag is not present it will be added:

    - (void)webViewDidFinishLoad:(UIWebView*)webView
    {
        int webviewWidth = (NSUInteger)webView.frame.size.width;
    
        if (!webView.loading) {
    
            NSString *jsCmd = [NSString stringWithFormat:@"try {var viewport = document.querySelector('meta[name=viewport]');if (viewport != null) {viewport.setAttribute('content','width=%ipx, initial-scale=1.0, user-scalable=1');} else {var viewPortTag=document.createElement('meta');viewPortTag.id='viewport';viewPortTag.name = 'viewport';viewPortTag.content = 'width=%ipx, initial-scale=1.0, user-scalable=1';document.getElementsByTagName('head')[0].appendChild(viewPortTag);}} catch (e) {/*alert(e);*/}", webviewWidth, webviewWidth];
    
            [webView stringByEvaluatingJavaScriptFromString:jsCmd];
        }
    }
    

    Here is the Javascript pretty formatted code we are injecting in the WebView with a width of 320px

    try {
        var viewport = document.querySelector('meta[name=viewport]');
        if (viewport != null) {
            viewport.setAttribute('content',
                    'width=320px, initial-scale=1.0, user-scalable=1');
        } else {
            var viewPortTag = document.createElement('meta');
            viewPortTag.id = 'viewport';
            viewPortTag.name = 'viewport';
            viewPortTag.content = 'width=320px,initial-scale=1.0, user-scalable=1';
            document.getElementsByTagName('head')[0].appendChild(viewPortTag);
        }
    } catch (e) {
        /*alert(e);*/
    } 
    

    you can remove the try/catch if you want.

提交回复
热议问题