2011-07-20 2 views
3

ok У меня есть бит, чтобы бороться с этим для тихих длинных nw ... Я динамически генерирую iframes с помощью javascript ... то, что я пытаюсь сделать, это удалить заполнение и маржу по умолчанию и установить его чтобы 0px ... Heres моего кодКак удалить заполнение корпуса 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 заключается в том, что, даже если вы не загружаете отдельную страницу, браузер все равно должен загружать «что-то» там. YMMV.

+0

Большое спасибо jimbojw ... его работы идеально! btw i dint использовать линию «iframe.onLoad = restyle», была ошибка суммы! Ват сделал это в любом случае? – samach

+0

Точка onload - обрабатывать случай, когда браузер еще не завершил «загрузку» iframe. Даже если вы не указываете атрибут src, iframe по-прежнему получает документ, загруженный там, и вы не можете рассчитывать на то, что он выполняется синхронно. – jimbojw

Смежные вопросы