Попытка открыть новое окно и создать элементы внутри него - PullRequest
1 голос
/ 19 октября 2019

Итак, я пытался открыть новое маленькое окно размером 500x500 и создать новые div с JS / Jquery внутри.

html:

<body>
      <div class="contain ">  </div>
</body>
newWindow = window.open("replaceWindow.html", "newWindow", "width=500,height=500");

newWindow.onload = () =>{
  let newDiv =  newWindow.document.createElement("div");
  newDiv.className = "card-body"
  newWindow.document.getElementByClassName('contain').appendChild(newDiv);
}

Все еще contain не добавляется newDiv.

1 Ответ

0 голосов
/ 19 октября 2019

Прежде всего, когда загружено ваше начальное окно first , оно кэшируется . Поэтому при создании окна new из окна first содержимое нового окна не загружается с сервера, а загружается из кэша. Следовательно, событие onload не возникает при создании окна new .

Однако в этом случае происходит событие onpageshow. Это всегда происходит после события onload и даже когда страница загружена из кэша.

Это объясняется на веб-сайте w3school :

Событие onpageshow аналогично событию onload, за исключением того, что оно происходит после события onload при первой загрузке страницы. Кроме того, событие onpageshow происходит каждый раз, когда страница загружается, тогда как событие onload не происходит, когда страница загружается из кэша.

Итак, это рабочее решение вашей проблемы с использованием onpageshow прослушивателя событий на newWindow вместо onload:

var newWindow = window.open("replaceWindow.html", "newWindow", "width=500,height=500");

newWindow.onpageshow = () => {
    let newDiv =  newWindow.document.createElement("div");
    newDiv.className = "card-body";
    newWindow.document.getElementsByClassName('contain').item(0).appendChild(newDiv);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...