javascript - Bagaimana untuk menukar ke tetingkap yang dibuka sebelum ini dengan window.open tanpa menyegarkan tetingkap?
phpcn_u1582
phpcn_u1582 2017-05-19 10:34:22
0
3
894

Saya menghadapi masalah sedemikian dalam projek.
Gunakan window.open(location.href, projectId) dalam tetingkap induk untuk membuka tetingkap baharu dengan projectId sebagai window.name.
Kemudian dalam tetingkap induk, saya ingin menukar terus ke tetingkap dibuka yang sepadan berdasarkan projectId, tetapi tanpa memuat semula tetingkap.

Menggunakan window.open(location.href, projectId) secara langsung akan bertukar ke tetingkap yang sepadan, tetapi halaman akan dimuat semula. Adakah terdapat cara untuk menukar sahaja tanpa memuat semula?

phpcn_u1582
phpcn_u1582

membalas semua(3)
淡淡烟草味

Gunakan pembolehubah untuk menyimpan nilai pulangan window.open, dan nilai pulangan ialah kaedah window 对象,执行 focus tetingkap itu.

win1 = window.open(url1);
win2 = window.open(url2);

// 后续用 win1 这个引用执行 focus 方法
if (!win1.closed) {
  win1.focus();
}
为情所困

Gunakan html5 sejarah berkaitan APIhtml5history相关API

history.pushState()

history. popstate

history.pushState()

sejarah peristiwa, dsb. 🎜 🎜Untuk kandungan berkaitan, sila rujuk rekod sejarah pelayar MDN🎜
某草草

Andaikan tetingkap A membuka tetingkap B, tetingkap B membuka tetingkap C, A mempunyai rujukan kepada B, dan B mempunyai rujukan kepada C.
Pada masa ini, melompat dari tingkap A ke B, atau melompat dari tingkap B ke C boleh dilaksanakan terus menggunakan window.focus().
Tetapi saya ingin melompat ke C dalam tetingkap A. Selepas menyemak pelbagai API, saya tidak menemui cara untuk mendapatkan objek tetingkap yang sepadan secara langsung melalui window.name. Saya mencuba localstorage tetapi tidak dapat menyimpan objek tetingkap. Keadaan ini agak menyusahkan.
Setelah difikirkan, jika mesti direalisasikan, pasti ada jalannya. Secara kasar, localStorage digunakan untuk menyimpan keseluruhan struktur pokok Nod akar ialah A apabila ia dibuka buat kali pertama, nod anak A ialah B, dan nod anak B ialah C. Dengan cara ini, semua tetingkap akhirnya boleh mencari pemilik tetingkap terakhir untuk dilompat, dan kemudian memberitahu pemilik tetingkap itu lapisan demi lapisan melalui postMessage, membolehkan dia mencetuskan kaedah tetingkap sasaran.focus()
Tetapi dengan cara ini, projek Struktur pokok akan menjadi agak rumit jika bilangan masa penukaran adalah tinggi, dan overhed komunikasi setiap lapisan dianggarkan agak tinggi. Ia akan menjadi lebih mudah jika penyemak imbas mempunyai kaedah untuk mendapatkan objek tetingkap berdasarkan window.name.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan