iFrame теряет свое имя при выполнении функции (и удалении / добавлении из DOM) - PullRequest
0 голосов
/ 04 апреля 2011

Я использую iframe, который добавляется и удаляется со страницы по мере необходимости.Iframe содержит код javascript, который вызывается из родительского документа.

Я обнаружил, что iframe «теряет свое имя», в результате чего он больше не может быть адресован с использованием чего-то вроде:

window.frames['iframename'].function()

Это происходит, когда функция вызывается впервые, а iframe удаляется и снова добавляется.Я всегда могу вызвать функцию хотя бы один раз, независимо от того, сколько раз будет добавлен и удален iframe, и могу вызывать ее много раз, если я не удаляю iframe - но как только была вызвана функция и iframeудаляется и впоследствии добавляется, при попытке вызвать функцию вызывает ошибку, что функция не определена.

Мне удалось обойти это, обратившись к iframe по его индексу, например:

window.frames[2].function()

Но мне не нравится этот вид «жесткого кодирования».

Почему это происходит, и как лучше всего вызывать функции в iframe, не прибегая к использованию индекса iframe?

1 Ответ

0 голосов
/ 04 апреля 2011

Вы можете исправить эту проблему, просто скрыв свой iframe вместо того, чтобы удалить его со страницы.

каждый раз, когда вы хотите удалить свой iframe, просто установите

document.getElementById('iframename').style.display = 'none';

и каждый раз, когда вы хотите добавить его, вы можете использовать

document.getElementById('iframename').style.display = 'block';

это будет действовать так, как вам нравится.

затем вы можете добавить свой iframe в переменную javascript и вызывать ваши функции, используя эту переменную:

var myFrame = window.frames['iframename'];
myFrame .function()

просто добавьте этот код javascript после размещения в iframe.

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