2011-07-20 84 views
3

好吧我有斌为此安静努力努力...我使用JavaScript动态生成iframe ...我试图做的是删除默认填充和边距,并设置它为0px ...继承人我的代码如何删除iframe身体填充

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; 

,如果我不喜欢<style> body {padding:0px; margin:0px} </style>笏情况是,主体具有零填充和利润,但是当用户点击一个按钮后产生的iframe,这种风格是不应用于iframes正文,并有我不想要的默认填充和边距! 谢谢!

回答

4

由于您没有在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的原因是,即使您没有加载单独的页面,浏览器仍然需要在其中加载“某物”。因人而异。

+0

非常感谢你jimbojw ...它的作品完美!顺便说一句,我使用“iframe.onLoad = restyle”行严格存在总和错误!笏做到了吗? – samach

+0

onload的要点是处理浏览器尚未完成“加载”iframe的情况。即使您没有指定src属性,iframe仍然会在其中加载文档,并且您不能指望它同步完成。 – jimbojw