window.opener里面的变量是未定义的

时间:2016-08-03 14:44:57

标签: javascript jquery scope

我有一个非常简单的页面,我可以从中显示一些缩略图,我想点击它们来显示放大的图像。

所以我在对象类的主页面中设置了一个点击功能" .pic":

$(".pic").click( function() {
    var img_data = {};
    img_data.img_name= $(this).attr("src");
    img_data.img_caption= $(this).attr("alt");
    var img_win=window.open("apri_foto.html","_blank","height=600"); 
});

这是子窗口中的代码

$(document).ready(function() {
    var data=window.opener.img_data;
    alert (data);
}); 

现在的问题是在子窗口中变量是未定义的。 我也尝试过反向,即从父目录设置,但它不起作用。我现在很容易,但我真的不明白我错在哪里。为了预测疑问,打开的页面来自同一个域(它位于同一个文件夹中)。 你能救我吗?

1 个答案:

答案 0 :(得分:0)

您的问题是img_data变量的范围:它是本地的。您需要将它放在全局范围内,否则当单击处理程序退出时它将被销毁。这意味着您需要在任何函数之外定义它:

var img_data = {};

$(".pic").click( function() {
    img_data.img_name= $(this).attr("src");
    img_data.img_caption= $(this).attr("alt");
    var img_win=window.open("apri_foto.html","_blank","height=600"); 
});

More about scope