【问题标题】:How to remove the iframe body padding如何删除 iframe 主体填充
【发布时间】:2011-07-20 17:15:17
【问题描述】:

好的,我让 bin 为这个安静的长 nw 苦苦挣扎...我正在使用 javascript 动态生成 iframe...我想要做的是删除默认填充和边距并将其设置为 0px...这是我的代码

var newDiv = create_New_Div(); //this simple returns the id of the newly created
                           //div in javascript

        var iframeIdName="my"+inival_iframearea+"iframe";
        inival_iframearea++;
        var htcontents = "<iframe id='"+iframeIdName+"' frameborder='0'></iframe>";
        document.getElementById(newDiv).innerHTML = htcontents; 

如果我喜欢&lt;style&gt; body {padding:0px; margin:0px} &lt;/style&gt;,那么发生的是主体的填充和边距为零,但是当用户单击按钮后生成 iframe 时,此样式不会应用于 iframe 主体并具有默认填充和我不想要的保证金! 谢谢!

【问题讨论】:

    标签: javascript iframe


    【解决方案1】:

    由于您没有在 iframe 中加载任何内容,因此您必须获取其中的文档并自己进行更改。

    var
       iframe = document.getElementById(newDiv).getElementsByTagName('iframe')[0];
    
    function restyle() {
       var body = iframe.contentDocument.body;
       body.style.padding = 0;
       body.style.margin = 0;
    }
    
    iframe.onload = restyle;
    restyle();
    

    关于contentDocument 有一些注意事项,因此您可能会在不同的浏览器中看到奇怪的行为。此外,您可能无法访问文档,具体取决于浏览器如何解释缺少src 属性。我已经看到调用页面是 https 的问题,并且缺少 src 导致浏览器加载 about:blank,它具有不同的协议,因此违反了同源策略。

    onload 的原因是即使您没有加载单独的页面,浏览器仍然必须在其中加载“某些东西”。 YMMV。

    【讨论】:

    • 非常感谢 jimbojw...它的作品完美!顺便说一句,我使用“iframe.onLoad=restyle”行,因为总和错误!它到底做了什么?
    • onload 的重点是处理浏览器尚未完成“加载”iframe 的情况。即使您没有指定 src 属性,iframe 仍然会在其中加载一个文档,并且您不能真正指望它会同步完成。
    猜你喜欢
    • 2014-11-20
    • 2020-07-21
    • 2017-11-20
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 2023-04-04
    相关资源
    最近更新 更多