Iframe src, установленный динамически через JavaScript, выполняется дважды в Internet Explorer - PullRequest
3 голосов
/ 09 июня 2010

Я столкнулся с очень раздражающей проблемой с IE. По сути, мне нужно установить источник IFrame с помощью JavaScript, однако исходный документ выполняется дважды, а не один раз во время каждого вызова.

Упрощенный HTML-код вставлен ниже (я упростил его, чтобы читатели могли быстро его понять. Источник настраивается с помощью JavaScript, поскольку он будет содержать динамический контент):

<html>
<head>
<title>Iframe test</title>
</head>
<body>

<iframe id="testIframe" scrolling="no" frameborder="0" src="" width="800" height="600"></iframe>

<script language="JavaScript">
    document.getElementById("testIframe").src = "http://localhost/test.php";
</script>

</body>
</html>

В этом примере test.php вставляет запись в локальную базу данных после вызова. Всякий раз, когда вышеуказанная страница вызывается с использованием IE, в большинстве случаев вставляются две строки (иногда вставляется только 1 строка, но это не норма). Я тестировал один и тот же скрипт на Chrome и Opera, и он правильно работает на них, поэтому это должно быть проблемой IE.

Если установлен src непосредственно внутри тега iframe, IE начинает работать правильно, однако мне нужно иметь возможность создавать URL с использованием javascript.

Кто-нибудь сталкивался с этой проблемой? а кто-нибудь знает решение / обходной путь?

Спасибо и С уважением Pierre

Ответы [ 3 ]

11 голосов
/ 09 июня 2010

Мне удалось решить проблему. В основном я сейчас использую

window.frames['testIframe'].document.location.href

вместо

document.getElementById("testIframe").src

и исходный документ поражается только один раз.

0 голосов
/ 14 августа 2014

Поместите скрипт в

<head> </head>

не в

<body></body>

Причина этого в следующем: он запустит iframe один раз и нарисует его, затем, поскольку скрипт следует, он запустит его снова. Возникла такая же проблема: пропущен iframe, из-за того, что поисковые системы не хотят использовать iframe.

0 голосов
/ 18 мая 2013

Я также столкнулся с этой же проблемой, но в моем случае причиной была IE10.Src, который я динамически установил на IFRAME, был открыт дважды.Я решил проблему, включив это в раздел:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9;">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...