Rumah  >  Soal Jawab  >  teks badan

javascript - Bagaimana untuk menukar ke tetingkap yang dibuka sebelum ini dengan window.open tanpa menyegarkan tetingkap?

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_u1582phpcn_u15822683 hari yang lalu779

membalas semua(3)saya akan balas

  • 淡淡烟草味

    淡淡烟草味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();
    }

    balas
    0
  • 为情所困

    为情所困2017-05-19 10:36:22

    Gunakan html5 sejarah berkaitan APIhtml5history相关API

    history.pushState()

    history. popstate

    history.pushState()

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

    balas
    0
  • 某草草

    某草草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.

    balas
    0
  • Batalbalas