Chrome не обновляет содержимое поля выбора на главной странице, когда значение добавляется обратным вызовом из другого всплывающего окна - PullRequest
0 голосов
/ 04 марта 2020

Это ниже работало как брелок, но с недавнего времени (и только с Chrome) главная страница не обновляет / не обновляет sh своего содержимого правильно. Возможно, какое-то недавнее обновление Chrome создает эту проблему? : -)

А кто-нибудь может это повторить? Например, используя версию 80.0.3987.122

На странице add1.htm представлен список выбора и ссылка, в которой «window.open» открывает новую всплывающую страницу add2.htm (так что оба windows видны на в то же время) Эта вторая страница выполняет обратный вызов javascript через window.opener к главному окну add1, которое затем добавляет новое значение в свой список выбора. Довольно обычное дело, все работает очень хорошо - до недавнего времени в Chrome.

Теперь, используя Chrome, новое добавленное значение в списке в add1 не отображается. Я могу нажать на add2, чтобы добавить несколько значений, не видя изменений в add1. Однако значения становятся видимыми, если я перемещаю указатель мыши на страницу / окно add1. Мне не нужно ни нажимать, ни что-либо, просто наведите указатель мыши на окно add1.

Можете ли вы повторить это? И в чем может быть проблема?

Кроме того, я недавно обнаружил, что если я добавляю «скрытое» поле формы на страницу add1 и просто устанавливаю это поле в любое значение одновременно с добавлением данных в список выбора, то страница обновляется должным образом даже в Chrome. Хотя, конечно, само скрытое поле не отображается.

Файл add1.htm:

<form name=SelectForm>
<select name=SelectField size=10>
<option>Original choice
</select>
</form>
<script>
function add() {
  window.open('add2.htm', 'AddPopup', 'left=200,top=200,width=200,height=200');
}
function AddFromPopup(text) {
  var fld;
  var res = false;
  if(document.SelectForm == null || (fld = document.SelectForm.SelectField) == null)
    alert('Cannot find Select field');
  else {
    res = true;
    fld.length++;
    fld.options[fld.length - 1].text = text;
  }
  return res;
}
</script>
<a href="javascript:add()">Add value</a>
</body></html>

Файл add2.htm:

<script>
function add2() {
  var res = false;
  try {
    if(window.opener && !window.opener.closed && window.opener.AddFromPopup)
      res = window.opener.AddFromPopup('Added choice');
  } catch(e) {}
  if(res != true)
    alert('Cannot find main window');
}
</script>
<a href="javascript:add2()">Add to first list</a>
</body></html>
´´´

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...