我先描述一下问题,我有一个页面a.html,页面中有个内嵌的<iframe><iframe id="iframepage" src="index.php?module=Com&action=PicMsgList&picid={$id}&mid={$mid}" width="100%" onLoad="iFrameHeight()" frameborder="0" scrolling="no"></iframe>
iFrameHeight()是控制iframe自适应高度的一个js,我在iframe里设置了滚动条不显示。这样在IE和FF里看不到iframe的滚动条,这是没问题的,但是在google浏览器中却仍然出现iframe的滚动条,导致页面很不美观。然后我查了一些资料发现了问题所在,因为我有一个样式文件test.css,里边有一个样式html{overflow-y:scroll;}.这个样式是控制在页面内容不足一屏时候,仍然显示右侧的滚动条,就是因为这个样式导致google浏览器里iframe 的 scrolling="no" 失效,我删除这个样式就正常了。后来深究原因是因为在google浏览器中如果html{}或者body{}中出现overflow,iframe的scrolling属性就会失效。因为这个样式牵涉到很多页面,所以我只能在我的页面上做文章,我的思路是在页面加载时候,去掉html中的overflow-y,却苦苦找不到方法,希望大家能帮下我。$('html').css('overflow-y',''); 这样替换样式是不行的。因为只要出现overflow这个单词,scrolling就失效,所以,只能移除这个样式。在线等,谢谢!

解决方案 »

  1.   

    <iframe id="iframepage" src="index.php?module=Com&action=PicMsgList&picid={$id}&mid={$mid}" width="100%" onLoad="iFrameHeight()" frameborder="0" scrolling="no" style="overflow:hidden;"></iframe>style="overflow:hidden;"
    会覆盖掉html{}中的overflow
      

  2.   


    这个试过,不管用的。我的意思就是要去掉over
      

  3.   

    $("#iframe").toggleClass("XXX");
    或:
    $("#iframe").removeClass("XXX");
    $("#iframe").addClass("XXX");
      

  4.   


    你没看清楚我的问题,影响我程序的那句css代码是html{overflow-y:scroll;},我现在想要加载页面时候移除html里的overflow。
      

  5.   

    .abb {
        overflow: auto;
    }
    document.getElementsByTagName("html")[0].className="abb";
    加个样式覆盖掉  js写的
      

  6.   


    1, 这个说法是错的
    2, 试试
    $('html').css('overflow-y','hidden');
    $('body').css('overflow-y','hidden');
      

  7.   


    不能覆盖的,只要出现“overflow”这个单词就不行。我问题里已经说过
      

  8.   

    <iframe id="iframepage" src="index.php?module=Com&action=PicMsgList&picid={$id}&mid={$mid}" width="100%" onLoad="iFrameHeight();this.contentWindow.document.body.html.style.overflow='hidden'" frameborder="0" scrolling="no"></iframe>这个样式要加到iframe页面里面。加在<iframe>标签上没用。你把this.contentWindow.document.body.html.style.overflow='hidden'整合到你的iFrameHeight()里吧。试试看。
      

  9.   

    还有,你的iFrameHeight();是不是写的有问题。如果已经跟据iframe内容调整了高度,应该不会出现滚动条。把你调整的高度再加上20px,试试。onload="this.height=this.contentWindow.document.body.scrollHeight+20"
      

  10.   


    不是我iFrameHeight的问题,如果我把样式里的overflow-y:scroll去掉,滚动条就正常了,加上overflow-y:scroll后scrolling="no"这个属性失效了,而不是高度问题。
      

  11.   

    为什么不换个思路,判断浏览器,两个相同的css文件,一个包含html{overflow-y:scroll;},一个不包含。根据浏览器动态的调用切换两个css文件。
      

  12.   

    是个办法。否则的话,可以试试给IFRAME再单独定义一个样式,如下:
    <link src="那个全局的css文件">
    <style>
    .theforever_csdn {overflow-y:visible;}
    </style>
    <iframe style="theforever_csdn">我没时间测试,楼主试下不行再说。
      

  13.   


    刚试过不行的,还是因为在google浏览器里,只要body{}或者html{}里出现overflow,页面中iframe的scrolling="no"就会失效。
      

  14.   

    不好意思,刚刚看到我回的贴出现了错误,
    <iframe id="iframepage" src="index.php?module=Com&action=PicMsgList&picid={$id}&mid={$mid}" width="100%" onLoad="iFrameHeight();this.contentWindow.document.body.html.style.overflow='hidden'" frameborder="0" scrolling="no"></iframe>this.contentWindow.document.body.html.style.overflow='hidden'
    这里面的.html是错的,不能加这个,被这css html{}给误导了,出现了这么低级错误,,不好意思。下面的两个页面,我在chrome里试过了。可以用。b.html<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <iframe src="a.html" width="100%" height='100px' onLoad="this.contentWindow.document.body.style.overflow='hidden'" frameborder="0" scrolling="no"></iframe>
    </body>
    </html>
    a.html<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <style type='text/css'>
    html{overflow:scroll;}
    </style>
    </head>
    <body>
    aaa<br>aaa<br>aaa<br>aaa<br>aaa<br>aaa<br>aaa<br>aaa<br>aaa<br>aaa<br>aaa<br>aaa<br>aaa<br>aaa<br>aaa<br>
    </body>
    </html>
      

  15.   

    像这么纠结的问题,其实出现的可能性不大,因为都是大家常用的元素,如果真是存在这样的情况,那大家的工作都会很杯具,有时候可以先在网上找找方法,换换思路,但做这些的前提下,是仔细调试代码,看看是自己多写了东西,还是别的插件影响了你这一块代码。我曾经也是美工用的一个插件,为HTML加上一些代码,导致原本很简单的a链接,变成了不能完成跨域请求找了好久才找到,主要还是自己调试代码,看看HTML代码或JS都出现了啥变化。特别像你这种情况,看看在谷歌下生成的HTML是啥样的,你应该就能得到启发
      

  16.   

    楼主的问题描述的真是太清晰了。
    Javascript是可以对每个元素每个属性进行操作的,楼主不妨使用javascript在页面load之后,彻底去除overflow属性,效果上是肯定可以的。