Измените src iframe из всплывающего окна - PullRequest
0 голосов
/ 30 августа 2011

В моем веб-приложении пользователь может открыть всплывающее окно для выбора объекта редактирования.Когда пользователь нажимает 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 , но ответы на этот вопрос не работают, предположительно потому, что код вызывается из всплывающего окна.)

1 Ответ

1 голос
/ 30 августа 2011

Возьмите эту строку:

elem_iframe.contentWindow.location.reload();

Он перезагружает iframe, и новый src не загружается.

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