a.html
<form nama="form1" metode="posting" action="">
<a href="javascript:void(null)" class="add" onClick="open('b.html','','resizable=1,scrollbars=1,status=no,toolbar=no,menu= tidak,lebar=500,tinggi=400,kiri=150,atas=50')">Naikkan</a>
<masukan tipe="teks" nama="teks1">
</bentuk>
b.html
<skrip bahasa="Javascript" type="teks/javascript">
fungsi nilai pengembalian()
{
window.opener.document.all.text1.value=document.getElementById("returnText").value;
jendela.tutup();
}
</skrip>
<input type="button" name="Kirim" value="Kirim" onclick="returnValue();">
<masukan nama="returnText" type="text" id="returnText">
</p>
Tambahan: Penggunaan window.opener
Dalam penggunaan umum, window.opener hanya digunakan untuk menyelesaikan masalah tidak memunculkan jendela pop-up saat menutup jendela, dan umumnya pemahaman yang lebih dalam kurang dipahami. Faktanya, window.opener mengacu pada jendela yang memanggil metode window.open.
Hal ini terutama digunakan untuk menyelesaikan penyerahan sebagian di tempat kerja. Operasi lintas halaman semacam ini sangat membantu untuk pekerjaan.
Jika Anda membuka halaman di jendela utama dan ingin jendela utama disegarkan, gunakan ini. Pembuka jendela yang membuka halaman sama dengan jendela jendela utama.
Untuk menyegarkan jendela utama dapat Anda gunakan
jendela.pembuka.lokasi.reload();
Jika Anda menggunakan direktori virtual: seperti struts *.do akan meminta Anda untuk mencoba lagi, Anda dapat mengubahnya menjadi window.opener.yourformname.submit()
Itu akan baik-baik saja
2〉
Ada situasi dalam aplikasi,
Buka jendela B di jendela A, tutup jendela B setelah menyelesaikan operasi di jendela B, dan secara otomatis menyegarkan jendela A pada saat yang bersamaan
fungsi closeWin(){
telah ditutup = benar;
window.opener.location="javascript:reloadPage();";
jendela.tutup();
}
fungsi window.onbeforeunload(){
if(!telahTutup){
window.opener.location="javascript:reloadPage();";
}
}
</skrip>
Kode di atas akan memunculkan kesalahan saat menutup jendela B, mengatakan bahwa Objek hilang. Kode yang benar adalah sebagai berikut:
fungsi closeWin(){
telah ditutup = benar;
window.opener.location="javascript:reloadPage();";
window.opener=null;
jendela.tutup();
}
fungsi window.onbeforeunload(){
if(!hasClosed){//Jika metode closeWin telah dijalankan, metode ini tidak akan dijalankan.
window.opener.location="javascript:reloadPage();";
}
}
</skrip>
Metode reloadPage adalah sebagai berikut:
fungsi memuat ulangHalaman() {
sejarah.pergi(0);
document.execCommand("menyegarkan")
dokumen.lokasi = dokumen.lokasi;
dokumen.lokasi.reload();
}
PS: Karena kita perlu mendukung penutupan normal dan penutupan paksa jendela untuk menangkap peristiwa, kita menggunakan variabel global hasClosed.
================
Selain itu, jika jendela induk berupa bingkai, masalah mungkin terjadi saat menyegarkan jendela induk:
Halaman tidak dapat di-refresh tanpa mengirimkan ulang informasinya.
Kemudian dimodifikasi sebagai berikut:
window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
Tidak perlu menjalankan metode reload() bawaan. Berhati-hatilah untuk tidak menambahkan kalimat ini secara berlebihan:
window.opener.parent.document.frames.item('mainFrame').location.reload();
==================== ========
Terakhir, untuk mendukung penyegaran jendela induk normal dan jendela induk bingkai secara bersamaan, kodenya adalah sebagai berikut:
fungsi closeWin() {
telah ditutup = benar;
<%if(null != bingkai){%>
window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
<%}lainnya{%>
window.opener.location = "javascript:reloadPage();";
<%}%>
//window.opener.top.mainFrame.location="javascript:reloadPage();";
//self.opener.frames.mainFrame.location.reload(true);
jendela.pembuka = null;
jendela.tutup();
}
fungsi window.onbeforeunload(){
jika (!telahTutup) {
<%if(null != bingkai){%>
window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
<%}lainnya{%>
window.opener.location = "javascript:reloadPage();";
<%}%>
jendela.pembuka = null;
}
}
Penggunaan window.opener
window.opener mengembalikan referensi ke jendela yang membuat jendela saat ini. Misalnya, jika Anda mengklik link pada a.htm untuk membuka b.htm, maka kami berencana memasukkan nilai pada b.htm dan menetapkannya ke a. htm. Di kotak teks dengan id "nama", dapat ditulis sebagai:
window.opener.document.getElementById("nama").value = "Masukkan data";
Tidak memiliki pemahaman yang baik tentang window.opener dalam javascript.
Mengapa tidak bisa digunakan dalam bingkai? Mengapa jendela induk dari jendela pop-up tidak bisa berada di halaman di dalam bingkai? Lalu bagaimana cara mengoperasikan jendela induk dalam bingkai melalui jendela pop-up?
opener.parent.frames['frameName'].document.all.input1.value coba ini :)
Jika Anda ingin mengubah halaman dalam bingkai ke halaman lain dalam bingkai yang sama atau halaman dalam bingkai induk, gunakan induk.
window.opener mengacu pada halaman induk dari halaman yang dibuka oleh window.open.
Objek window.frames dapat mereferensikan halaman dalam iframe atau halaman dalam frameset.
Ini bisa dilakukan
jendela.frame[0].document.getElementById('xx');
Ini bisa dilakukan
window.frames[0].document.body.innerHTML;
frm = window.parent.window.frames['uploadFrame'];
frmDocument = frm.dokumen;
frm.sb(3); //sb adalah fungsi di halaman uploadFrame
Untuk Firefox
Jika Anda mengalami kesalahan: parent.document.frames tidak memiliki PRperties
Ganti saja dengan kode berikut. Kode ini kompatibel dengan IE dan ff. frm = window.parent.window.frames['uploadFrame']; Sebenarnya koleksi frame tidak digantung di dokumen tetapi di bawah objek window.
Perhatikan bahwa ada batasan dalam memodifikasi halaman dalam bingkai dengan cara ini, yaitu harus berada di bawah domain yang sama, jika tidak maka tidak dapat diakses jika berada di bawah domain yang sama, tetapi nama subdomainnya berbeda, maka tambahkan kalimat ke file js dan html yang terlibat.
document.domain = xxx.com [isikan nama domain anda disini]
document.getElementById('iframeid').contentWindow.document.getElementById('someelementid');
bertanya:
Di jendela induk window.open() jendela anak. dan tentukan variabel i.
Masukkan nilai j di sub-jendela lalu window.opener.i=j;
Ini bisa diteruskan. Tapi saya menambahkan window.close(); di akhir sub-jendela dan nilainya tidak dapat diteruskan.
Tolong beri tahu saya jika ada cara untuk mengatasi masalah ini. Izinkan saya meneruskan nilainya sebelum menutup jendela anak.
Kodenya adalah sebagai berikut:
Jendela induk: parent.jsp
<skrip>
var saya;
window.open('<%=contextPath%>/usermanage/newscontrol/cd.jsp);
</skrip>
<masukan tipe="tombol" onclick="peringatan(i)">
Subjendela:cd.jsp
<skrip>
fungsi subm(){
window.opener.i=5;
jendela.tutup();
}
</skrip>
<masukan tipe="tombol" onclick="subm()">
Jawaban terbaik Anda dapat meletakkannya di jendela induk
<masukan id="fromChild" type="tersembunyi" />
<tipe masukan="tombol"
onclick="alert(document.getElementById('fromChild').value)">
Di subjendela:
fungsi subm(){
window.opener.document.getElementById('fromChild').value=5;
jendela.tutup();
}
Ini bisa dilakukan
<kepala>
<bahasa skrip=javascript>
fungsi tutup jendela()
{ jendela.pembuka=null;
jendela.tutup();
}
</skrip>
</kepala>
<tubuh>
<input id="Button1" type="button" value="button" onclick="windowclose()" />
</tubuh>
-