Webview iframe overflow

前端 未结 4 1049
Happy的楠姐
Happy的楠姐 2020-12-28 12:43

I\'m currently building a web app in android. My app runs in a webview, and loads third-party contents through iframes. The iframe size is fixed and supposed not to be chang

相关标签:
4条回答
  • 2020-12-28 13:09

    I found out a way to avoid this nasty problem. I've disabled the scrolling bar of iframe, and use iscroll in the application instead. This scrolling bar is nearly the same as the original one, though slower on my HTC Magic phone.

    0 讨论(0)
  • 2020-12-28 13:26

    Tony. In my opinion, the key point of this trick is that you have to fix the height of the iframe. Then you can apply the iscroll to any div element in the iframe. Here is a small code snippet:

        // disable default touchmove handler
        document.addEventListener('touchmove', function(e){
            e.preventDefault();
        });
        // make the div 'list' scrollable
        var myScroll = new iScroll('list'); // <div id='list'>Blah</div>
    

    I use jQuery in the code and it works well with iScroll.

    0 讨论(0)
  • 2020-12-28 13:28

    I was trying to show an Iframe in my apps WebView, I had the problem of not being able to chop off the bottom 30px of my iframe using CSS 'overflow:hidden;'. The way I got around this was to make my own index.html file and save it locally as an asset within my app.

    If you don't have an 'assets' folder within your project, go to step 1

    (this is not the same as the 'res' folder)

    [On Windows 7]

    Step 1 - Make assets folder: In your Android Studio project click:

    File --> New --> Folder --> Assets Folder

    Image showing how to make assets folder in Windows

    Step 2 - Make the index.html that will hold your <iframes> within a <div> You can copy the code below to use as sample code in your index.html file:

    <!DOCTYPE html>
        <html>
        <head>
            <title></title>
            <meta charset="utf-8" />
        </head>
        <body style="margin:0px;">
            <div style="width:605px;height:875px;overflow:hidden;">
               <iframe src="https://docs.google.com/presentation/d/1QyNNURCVBme50SAuIceq3sh7Ky74LuWNeEM8B910aC4/embed?start=true&loop=true&delayms=2000" scrolling="no" frameborder="0" width="605" height="905" allowfullscreen="false" mozallowfullscreen="false" webkitallowfullscreen="false"></iframe>
            </div>
        </body>
    </html>
    

    Step 3 - Call the index.html file in your WebView

    Note--(Id of this example WebView is 'main_ad', change this id what what ever you named your webviews id)

    WebView webView = (WebView) findViewById(R.id.main_ad);
    webView.setWebViewClient(new WebViewClient());
    webView.loadUrl("file:///android_asset/index.html");  //this is why you needed the assets folder
    webView.getSettings().setJavaScriptEnabled(true);
    

    Hope this helps even 1 person working with webviews and iframes

    0 讨论(0)
  • 2020-12-28 13:29

    set a fixed size or full-size height for WebView and its parent

    for example :

    android:layout_height="match_parent"
    

    UPDATE: if Webview parent is Scrollbar, remove it

    0 讨论(0)
提交回复
热议问题