Rumah > Soal Jawab > teks badan
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?
淡淡烟草味2017-05-19 10:36:22
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();
}
为情所困2017-05-19 10:36:22
Gunakan html5
sejarah
berkaitan API
html5
的history
相关API
history.pushState()
history. popstate
某草草2017-05-19 10:36:22
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.