检测 iframe 重新加载,获取 img src,应用于父级
Detecting an iframe reload, get img src, apply to parent
场景:
'Parent Page' 包含两个 iframe,'activity_overview' 和 'upload_avatar'。
'Activity_Overview' 包含同一域中的一个页面。 'Upload_avatar' 还包含同一域中的一个页面,其中包含一个表单。
当提交 'upload_avatar' 中的表单(提交新头像 img)时,它会自动在 'activity_overview' window 中打开一个包含上传图像的新页面。
我想做的是从此图像获取 img src 并将其传递到我父页面中的几个 div,以便这些图像随着 'activity_overview' iframe.
我尝试了很多方法,包括将 src 作为变量传递,从 php 到 js,setInterval 以继续检查 img var 是否已定义等。下面的代码对我来说是最简单和理想的,但是没有检测到 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 可能有一些相关性,但我不确定如何实施该解决方案。
感谢@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();
});
场景:
'Parent Page' 包含两个 iframe,'activity_overview' 和 'upload_avatar'。 'Activity_Overview' 包含同一域中的一个页面。 'Upload_avatar' 还包含同一域中的一个页面,其中包含一个表单。 当提交 'upload_avatar' 中的表单(提交新头像 img)时,它会自动在 'activity_overview' window 中打开一个包含上传图像的新页面。
我想做的是从此图像获取 img src 并将其传递到我父页面中的几个 div,以便这些图像随着 'activity_overview' iframe.
我尝试了很多方法,包括将 src 作为变量传递,从 php 到 js,setInterval 以继续检查 img var 是否已定义等。下面的代码对我来说是最简单和理想的,但是没有检测到 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 可能有一些相关性,但我不确定如何实施该解决方案。
感谢@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();
});