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?
Gunakan pembolehubah untuk menyimpan nilai pulangan window.open, dan nilai pulangan ialah kaedah
window
对象,执行focus
tetingkap itu.Gunakan
html5
sejarah
berkaitanAPI
html5
的history
相关API
history.pushState()
history. popstate
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.