Как убрать прокладку корпуса iframe - PullRequest
3 голосов
/ 20 июля 2011

хорошо, у меня бин борется с этим для тихих длинных nw ... я генерирую iframes динамически, используя javascript ... что я пытаюсь сделать, это удалить отступы по умолчанию и поле и установить его в 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; 

если мне нравится <style> body {padding:0px; margin:0px} </style> В этом случае происходит то, что основное тело имеет нулевые отступы и поля, но когда iframe генерируется после того, как пользователь нажимает кнопку, этот стиль не применяется к телу iframes и имеет отступ по умолчанию и маржа, которую я не хочу !! спасибо!

1 Ответ

4 голосов
/ 20 июля 2011

Так как вы ничего не загружаете в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...