2015-04-24 4 views
1

Сценарий:обнаружения IFrame перезагрузки, получить IMG SRC, обратиться к родителю

'родительской страницы' содержит две плавающие фреймы, 'activity_overview' и 'upload_avatar'. «Activity_Overview» содержит страницу в том же домене. «Upload_avatar» также отображает страницу в том же домене, который содержит форму. Когда отправляется форма (которая отправляет новый аватар img) в 'upload_avatar', она автоматически открывает новую страницу в окне «activity_overview», которая содержит загруженное изображение.

Что бы я хотел сделать, это получить img src с этого изображения и передать это нескольким div на моей родительской странице, чтобы эти изображения обновлялись вместе с (или вскоре после) перезагрузкой «activity_overview» 'iframe.

Я пробовал несколько вещей, включая передачу src как переменной, от php до js, setInterval, чтобы продолжать проверять, определен ли img var еще ... .cc. Следующий код является для меня самым простым и идеальным, но перезагрузка страницы в iframe не обнаружена.

$(document).ready(function(){ 
    function avatarUpdate(){ 
    $('#avatar-crop-submit').click(function() { 
     $('#avatar-upload-form').submit(function() { 
      $('#avatar-upload-form').attr('target','activity_overview'); 
      window.parent.$("#overview-list, #overview").addClass('active'); 
      window.parent.$("#edit-list, #edit").removeClass('active'); 
      window.parent.$('#upload_avatar').attr('src', 'www.example.com/form/'); 
      $('#activity_overview').on('load', function(){ 
       var avatar_src = $('#temp_header_avatar img').attr('src'); 
       window.parent.$('#header_avatar').html('<img src="' + avatar_src + '" class="avatar user-1-avatar avatar-150 photo" width="150" height="150" alt="Profile Photo">').hide().fadeIn(1000); 
       window.parent.$('#nav_avatar').html('<img src="' + avatar_src + '" class="avatar img-circle user-1-avatar avatar-60 photo" width="60" height="60" alt="Profile Photo">').hide().fadeIn(1000); 
      }); 
     }); 
    }); 
    }  
    avatarUpdate(); 
}); 

Я думал this question может иметь какое-то значение, но я не уверен, как реализовать решение.

+1

$ ('activity_overview') селектор будет искать тег . Исправьте селектор и посмотрите, работает ли это –

+0

Если перезагрузка iframe, нужен ваш код для запуска на вновь загруженной странице. Запуск кода внутри обработчика отправки не приносит пользы. Кроме того, вложенные обработчики событий внутри других обработчиков также вызовут проблемы ... не очень хорошая практика – charlietfl

+0

Спасибо @gp, я изначально имел это на месте, попробовал что-то новое, перепечатал его и забыл hte '#'. К сожалению, это все еще не делает трюк. –

ответ

0

Благодаря @gp и его разъяснениям относительно того, где нужно было вызвать js, я получил его работу.

Я поместил следующий код на страницу, загружаемую в iframe, и работает по желанию.

$(window).load(function() { 
     function getAvatarSrc(){ 
     var avatar_src = $('#temp_header_avatar img').attr('src'); 
     window.parent.$('#header_avatar').html('<img src="' + avatar_src + '" class="avatar user-1-avatar avatar-150 photo" width="150" height="150" alt="Profile Photo">').hide().fadeIn(1000); 
     window.parent.$('#nav_avatar').html('<img src="' + avatar_src + '" class="avatar img-circle user-1-avatar avatar-60 photo" width="60" height="60" alt="Profile Photo">').hide().fadeIn(1000); 
     }; 
     getAvatarSrc(); 
    }); 
Смежные вопросы