2013-09-09 4 views
0

Я хочу отредактировать высоту iframe, который твиттер служит для dom после того, как функция скрипта завершена. Причина, по которой я хочу изменить высоту здесь, - это то, что высота iframe должна быть такой же высоты, как и элемент sibling.Редактировать высоту динамически загружаемого iframe с помощью jquery

Поэтому я хочу twitteriframe.height() == mydiv.height().

Однако, поскольку iframe загружается динамически, я не могу получить к нему доступ в документе .ready. Нет события click, поэтому что еще я могу сделать, чтобы отредактировать высоту iframe?

ответ

0

Постарайтесь отрегулировать высоту после загрузки рамы.

$('#frameId').load(function() { 
    // do something here 
}); 

Если добавляется элемент динамически, то есть проблема - вы не имеете никакого контроля над вставленными элементами (с DOM Мутация События устаревшее), так как обходной путем вы можете непрерывно проверять наличие такого элемента (для пример с setInterval, который очищается после обнаружения элемента).

После того, как он добавлен, отметьте высоту iframe и примените ее ко второму элементу.

+0

Это не работает, и я не уверен, как это могло бы быть, потому что элемент еще не существует, чтобы связать событие с ним. – Nicola

0

Вы можете попробовать что-то вроде этого:

var queryTimeoutMS = 100; 
window.setTimeout(resizeTwitterIFrame,queryTimeoutMS); 
function resizeTwitterIFrame(){ 
    if($("#frameId").length > 0){ 
    //Do your stuff 
    } 
    else{ 
    window.setTimeout(resizeTwitterIFrame,queryTimeoutMS); 
    } 
} 
+0

Спасибо, это действительно хорошо и, кажется, входит в функцию при загрузке iframe, но это не меняет размер. Интересно, есть ли проблема с изменением размеров iframe, загружаемых динамически. – Nicola

+0

Как вы это делаете? Вот так? \t \t '$ (" # frameId "). Height (size);' – weiglt

+0

no '(" #frameId "). Attr ('height', size)', так как он установлен в iframe. – Nicola

0

я решил вместо того, чтобы сделать это с помощью CSS. Установите высоту в родительском контейнере и установите ее на overflow:hidden;

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