В моем веб-приложении пользователь может открыть всплывающее окно для выбора объекта редактирования.Когда пользователь нажимает OK во всплывающем окне, он должен обновить src
iframe в родительском окне (и, разумеется, перезагрузить iframe) в соответствии с тем, какой объект был выбран.
Моя функция (вродительское окно):
function dismissEditPopup(win, newId) {
newId = html_unescape(newId);
var elem_iframe = document.getElementById("iframe_id");
// (*) this line doesn't work
elem_iframe.src = '/view_object/' + newId;
elem_iframe.contentWindow.location.reload();
win.close();
}
Эта функция вызывается из всплывающего окна, содержащего скрипт:
<script type="text/javascript">
opener.dismissEditPopup(window, "hash_of_new_object");
</script>
Проблема заключается в том, что строка (*)
завершается сбоем без вывода сообщений.В инспекторе Firefox 3.6 и Google Chromium я вижу, что атрибут src
iframe обновляется , но elem_iframe.contentWindow.location.href
не изменяется.(Если я добавлю строку elem_iframe.contentWindow.location.href = elem_iframe.src;
, присвоение игнорируется.).В консоли ошибок Javascript нет ошибок.Странно, но работает , как и ожидалось, если я назначу elem_iframe.src
с консоли Javascript.
Я могу изменить значение скрытого поля <input>
таким же образом,используя document.getElementById("hidden_id").value = newId;
.
Все обслуживается с одного и того же сайта.
(Аналогично Изменение iframe src с помощью Javascript , но ответы на этот вопрос не работают, предположительно потому, что код вызывается из всплывающего окна.)