>  Q&A  >  본문

javascript - 창을 새로 고치지 않고 window.open으로 이전에 열린 창으로 전환하는 방법은 무엇입니까?

프로젝트에서 이런 문제가 발생했습니다.
상위 창에서 window.open(location.href, projectId)을 사용하여 projectId가 window.name인 새 창을 엽니다.
그런 다음 상위 창에서 창을 새로 고치지 않고 프로젝트 ID를 기반으로 해당 열린 창으로 직접 전환하고 싶습니다.

window.open(location.href, projectId)을 직접 사용하면 해당 창으로 전환되는데, 페이지를 새로고침하지 않고 전환만 할 수 있는 방법이 있나요?

phpcn_u1582phpcn_u15822683일 전776

모든 응답(3)나는 대답할 것이다

  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:36:22

    window.open의 반환 값을 변수에 저장하는데, 반환 값은 해당 창의 window 对象,执行 focus메서드입니다.

    으아악

    회신하다
    0
  • 为情所困

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

    html5기록 관련 API를 사용하세요html5history相关API

    history.pushState()

    history. popstate

    history.pushState()

    history.popstate 이벤트 등 🎜 🎜관련 내용은 MDN 브라우저의 기록 기록을 참고하세요🎜

    회신하다
    0
  • 某草草

    某草草2017-05-19 10:36:22

    A 창이 B 창을 열고, B 창이 C 창을 열고, A가 B에 대한 참조를 갖고, B가 C에 대한 참조를 갖는다고 가정합니다.
    이때, A창에서 B창으로 점프하거나, B창에서 C창으로 점프하는 것은 window.focus()를 이용해서 직접 구현할 수 있습니다.
    그런데 윈도우 A에서 C로 점프하고 싶은데요. 각종 API를 확인해봐도 window.name을 통해 해당 윈도우 객체를 직접 얻는 방법을 찾지 못했습니다. localstorage를 시도했지만 창 개체를 저장할 수 없습니다. 이 상황은 좀 곤란합니다.
    생각해보면 꼭 실현되어야 한다면 방법이 있을 거에요. 대략적으로 localStorage는 전체 트리 구조를 저장하는 데 사용됩니다. 처음 열렸을 때 루트 노드는 A이고, A의 하위 노드는 B, B의 하위 노드는 C입니다. 이러한 방식으로 모든 창은 마침내 점프할 마지막 창의 소유자를 찾은 다음 postMessage를 통해 레이어별로 해당 창의 소유자에게 알리고 대상 window.focus() 메서드를 트리거할 수 있습니다
    그러나 이렇게 하면 프로젝트가 여러 번 전환되면 트리 구조가 다소 복잡해지며, 각 계층의 통신 오버헤드가 상당히 클 것으로 추정됩니다. 브라우저에 window.name을 기반으로 창 개체를 얻는 방법이 있으면 훨씬 더 편리할 것입니다.

    회신하다
    0
  • 취소회신하다