2016-08-03 12 views
0

私はいくつかのサムネイルを表示している非常に単純なページを持っています。window.opener内の変数が定義されていません

だから私は、オブジェクトクラス「.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); 
}); 

問題であり、子ウィンドウで変数が未定義になっています。 逆の原因、つまり親ディレクトリからの設定も試しましたが、動作していません。私は今はとても簡単ですが、私が間違っているところは分かりません。疑わしいことを予測するために、開かれたページは同じドメインからのものです(同じフォルダにあります)。 私を助けることができますか?

答えて

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

:それはあなたが任意の関数外で定義する必要があることを意味します
関連する問題