Передача функции из другого окна чистого JavaScript

Я требую, чтобы некоторые функции JavaScript были отправлены обратно в родительское окно, и возникли трудности. Я создал образец, чтобы повторить то, что я пытаюсь сделать. Но в основном мне нужно показать и скрыть DIV в родительском окне, выполнив функцию из отдельного окна.

Первый фрагмент - это Page1.html,

function newWin() {
  window.open("page2.html", "New_Win");
}

function toggle_vis(id) {
  var e = document.getElementById(id);
  if (e.style.display == 'block')
    e.style.display = 'none';
  else
    e.style.display = 'block';
}
#container {
  background-color: red;
  margin: auto;
  display: block;
  position: absolute;
  width: 800px;
  height: 600px;
  padding: 10px;
  z-index: 1;
}

#frame {
  background-color: black;
  display: block;
  position: absolute;
  width: 400px;
  height: 300px;
  padding: 0px;
  z-index: 2;
}

#inner {
  background-color: green;
  display: none;
  position: absolute;
  width: 200px;
  height: 150px;
  z-index: 3;
}
<div id="container">
  <div id="frame"><button onclick="newWin()">Open New Window</button>
    <div id="inner"></div>
  </div>
</div>

Это код из Page2.html.

function test(){
   parent.document.innerHTML.toggle_vis('inner');
}
#container {
    background-color: blue;
    margin: auto;
    display: block;
    position: absolute;
    width: 400px;
    height: 200px;
    padding: 10px;
    z-index: 1;
}
<div id="container">
<button onclick="test()">Show/Hide Parent Div</button>
</div>

1 ответ

Решение

Вы можете сослаться на окно открывания с помощью window.opener объект, следовательно:

function test(){
   window.opener.toggle_vis('inner');
}
Другие вопросы по тегам