2012-08-26 28 views
12

Bazı verileri nasıl iletebilirim veya açılır pencereden ana pencerede bir işlevi nasıl çağırırım?Açılır pencereden ana pencereye veri nasıl aktarılır?

Kullanıcı aynı web sitesinde bir açılır pencereyi açacak olan bir bağlantıyı tıklayacak, açılır pencereyi bitirdikten sonra, yeni verileri ana pencereye geri göndermeyi veya üst pencerede bir işlevi çağırmasını istiyorum. . böylece üst pencere bir fonksiyonu çağırmak için benzeri

+0

, ** _ blank ** ile açılan bir pencere mi demek istiyorsun? Popup penceresi Çapraz Etki alanı olduğunda, – sQVe

+0

window.ppopup() –

cevap

17

window.opener nesne aradığınız budur, sizin pop-up içinden kullandı:

window.opener.yourFunc() 
İşte
+0

, IE'de çalışmaz. – Salman

+0

Hata görüyorum: Özelliğe erişmek için izin reddedildi yourFunc() – 123qwe

+0

http://stackoverflow.com/a/32617334/470749 bu çalışmanın güzel bir örneğidir. – Ryan

2

eğlenceli ve kolay bir demo olduğunu this answer to a similar question'dan esinlenilmiştir (ancak the most difficult bug of my career'u araştırmaya yardımcı olmak için kendi amaçlarım için değiştirilmiştir). aşağıdaki gibi

(aynı dizinde) 2 dosya oluşturma: _popup_ ile ne demek istiyorsun

Parent.html

<button type="button" onclick="popup('popup.html', '', 800, 200);">Add My Card</button> 
=&gt; 
<span id="retrievedData">No data yet.</span>  
<script> 
    function popup(url, title, width, height) { 
     var left = (screen.width/2) - (width/2); 
     var top = (screen.height/2) - (height/2); 
     var options = '';  
     options += ',width=' + width; 
     options += ',height=' + height; 
     options += ',top=' + top; 
     options += ',left=' + left;  
     return window.open(url, title, options); 
    } 

    function setData(data) { 
     console.log(data); 
     var strData = JSON.stringify(data); 
     document.getElementById('retrievedData').innerHTML = strData; 
     var requestBinUrl = 'http://requestb.in/18u87g81'; 
     window.location.href = requestBinUrl + '?data=' + strData; 
    } 
</script> 

popup.html

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<form id="popupForm" name="f">  
    <select id="urlField" name="url"> 
     <option> 
      http://date.jsontest.com/ 
     </option> 
     <option> 
      http://time.jsontest.com/ 
     </option> 
     <option> 
      http://md5.jsontest.com/?text=HereIsSomeStuff 
     </option>  
    </select> 
    <div><input type="submit" /></div>  
</form> 
<script> 
    $('#popupForm').submit(function(e) { 
     e.preventDefault(); 
     var url = $('#urlField').val(); 
     console.log(url); 
     $.ajax({ 
      url: url 
     }).then(function(data) { 
      console.log(JSON.stringify(data)); 
      window.opener.setData(data); 
      window.close(); 
     }); 
    });  
</script> 
İlgili konular