Это ниже работало как брелок, но с недавнего времени (и только с 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>
´´´